python – 为什么在使用Apache mod_wsgi的Flask应用程序上进行gevent会引发NotImplementedError?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 为什么在使用Apache mod_wsgi的Flask应用程序上进行gevent会引发NotImplementedError?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1812字,纯文字阅读大概需要3分钟。
内容图文
![python – 为什么在使用Apache mod_wsgi的Flask应用程序上进行gevent会引发NotImplementedError?](/upload/InfoBanner/zyjiaocheng/784/67efa7fd0c834096af66b84b71cb1f05.jpg)
我在使用Apache(mod_wsgi)部署我的Flask应用程序时遇到问题
和共享托管(Webfaction)上的gevent.
该应用程序在Flask提供的开发服务器中运行良好,但是当我
尝试部署它我在日志文件中收到以下错误:
[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,因为我正在使用python-requests’ async module
制作并发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
有人有任何建议来解决这个问题吗?
解决方法:
好像我自己找到了解决方案.以下指令解决了我的问题:
WSGIApplicationGroup %{GLOBAL}
这个想法来自另一个answer,建议将WSGIApplicationGroup设置为GLOBAL以解决WSGI进程不断崩溃的问题. From WSGI documentation:
To force a specific WSGI application to be run within the very first
Python sub interpreter created when Python is initialised, the
WSGIApplicationGroup directive should be used and the group set to
‘%{GLOBAL}’.
无法完全理解为什么这个指令解决了我的问题,但确实如此.如果有人能够用简单的英语向我解释这一点,我将非常高兴;-)
内容总结
以上是互联网集市为您收集整理的python – 为什么在使用Apache mod_wsgi的Flask应用程序上进行gevent会引发NotImplementedError?全部内容,希望文章能够帮你解决python – 为什么在使用Apache mod_wsgi的Flask应用程序上进行gevent会引发NotImplementedError?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。