我在使用Apache(mod_wsgi) 和gevent共享主机(Webfaction)部署我的Flask应用程序时遇到问题。为什么gevent在Apache + mod_wsgi的Flask应用程序中引发NotImplementedError?
应用程序工作在由瓶提供的开发服务器,但是当我 尝试部署它,我得到的日志文件中出现以下错误:因为我使用了python-requests' async module
[Tue Mar 13 15:48:24 2012] [error] Traceback (most recent call last):
[Tue Mar 13 15:48:24 2012] [error] File "evdns.pxi", line 78, in gevent.core.__evdns_callback (gevent/core.c:6300)
[Tue Mar 13 15:48:24 2012] [error] File "/home/username/.virtualenvs/staging/lib/python2.7/site-packages/gevent/hub.py", line 297, in switch_args
[Tue Mar 13 15:48:24 2012] [error] File "/home/username/.virtualenvs/staging/lib/python2.7/site-packages/gevent/hub.py", line 290, in switch
[Tue Mar 13 15:48:24 2012] [error] File "/home/username/.virtualenvs/staging/lib/python2.7/site-packages/gevent/hub.py", line 135, in get_hub
[Tue Mar 13 15:48:24 2012] [error] NotImplementedError: gevent is only usable from a single thread
我需要GEVENT到 发出并发HTTP请求。 我想谷歌左右,但我发现的唯一的建议就是叫
from gevent import monkey
monkey.patch_all()
的东西,我已经做在我的代码。
的WSGIDaemonProcess
值是:
WSGIDaemonProcess myapp processes=5 python-path=/home/myusername/webapps/myapp/lib/python2.7 threads=1
这里是我的httpd.conf:http://pastebin.com/eWygicJH
任何人有任何建议来解决这个问题?
这是你的httpd.conf中WSGIDaemonProcess的值吗? – Masci 2012-03-13 21:50:07
可能是因为根据我的经验gevent有点不高兴,如果只有在其他人已经导入并以某种方式使用它时猴子才会修补Python线程模块。正在导致我无法解决某些问题。尽管如此,还没有机会深入研究问题。 – 2012-03-13 23:47:17
@Masci我更新了一个链接到我的httpd.conf和WSGIDaemonProcess的值 – raben 2012-03-14 14:08:40