簡體   English   中英

哪些功能是由gunicorn gevent worker修補的猴子?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM