我正在使用gunicorn运行一些flask和django应用程序,使用gevent工作程序,并有一些问题。。。
首先,我假设因为gunicorn fork和实例化了我的进程,它将对标准模块进行monkey补丁,我不必自己调用monkey.patch,它已经为我完成了,并且每个请求都作为greenlet运行,对吗?
第二,这是很重要的一部分,哪些特技真的能让猴子得到枪角的修补? 使用gevent时,始终可以选择要修补的功能(socket、patch、urllib)。。。 所以,问题是,这些特写中的哪一个真的是用猴子补的布-古尼孔-格文特? 我怎样才能更改此列表?
例如,对monkey.patch_all()的标准调用不修补urllib? 我怎么知道是不是补好了?如何强迫gunicorn gevent修补?
谢谢
乔
看起来gevent工作程序在初始化时调用monkey.patch_all()。
https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/ggevent.py#L45
当你的应用程序启动时,你仍然可以调用你自己的初始化代码。
在烧瓶里我用的是古尼康粉笔。
我的应用程序ini:
包中的setup.py:
示例mypackage/module.py:
现在您可以运行它:
我已经回答了一个简单的问题,这可能会解决您的问题。
参考这个问题:Do I need call monkey.patch_all() in Django+Gunicorn+GEvent+Boto structure?
首先,gunicorn使用SyncWorkers作为默认值,如果不更改配置,那么服务器将不使用greenlet。即使你把所有东西都修补好了,我认为它也没有多大帮助,因为gunicorn一次处理一个请求是默认的。
其次,看一下GeventWorker的源代码,它实际上是对所有内容进行了修补。
相关问题 更多 >
编程相关推荐