[英]Which features are monkey patched by gunicorn gevent worker?
我正在使用gunicorn運行一些燒瓶和django應用程序,使用gevent worker,並有一些問題......
首先,我假設因為gunicorn fork並實例化我的進程,它將修補標准模塊,我不必自己調用monkey.patch_all,它已經為我完成了,並且每個請求都以greenlet運行,是嗎正確?
第二,這是重要的部分,這些特征真的被gunicorn-gevent修補了嗎? 當你使用gevent時,你總是可以選擇要修補的功能(套接字,補丁,urllib)...所以,問題是,這些特色中的哪一個真的得到了猴子補丁bu gunicorn-gevent? 我該如何更改此列表?
例如,對monkey.patch_all()的標准調用不會修補urllib? 我怎么知道它是否被修補了? 以及如何強制gunicorn-gevent修補它?
謝謝
喬
貌似gevent worker在初始化時調用了monkey.patch_all()。
https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/ggevent.py#L45
您可以在應用程序啟動時調用自己的初始化代碼。
用燒瓶我用gunicorn貼紙。
my_app.ini:
[app:main]
use = egg:mypackage#myapp
# app config goes here
[server:main]
use = egg:gunicorn#main
# you can put gunicorn config options here
你的包中的setup.py:
entry_points={
'paste.app_factory': [
'myapp = mypackage.module:app_factory'
]
示例mypackage / module.py:
def app_factory(global_config, **config):
# initialization code / gevent monkey patch goes here
# also you can assemble your wsgi stack.
# then return your flask app
return app
現在你可以運行它:
gunicorn_paster my_app.ini
我已回答了一個簡單的問題,這可能會解決您的問題。
請參閱這個問題: 我是否需要在Django + Gunicorn + GEvent + Boto結構中調用monkey.patch_all()?
首先,gunicorn默認使用SyncWorkers ,如果不更改配置,則服務器將不使用greenlet。 即使你全部修補了補丁,我認為它沒有多大幫助,因為gunicorn默認處理一個請求。
其次,看看GeventWorker的源代碼,它實際上是猴子補丁。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.