是否可以使用Gunicorn在一个(水瓶)应用程序中处理WebSockets和常规的WSGI视图?
我知道如何让websockets使用Gevent WSGI服务器工作,我可以获得一个与Gunicorn一起运行的常规WSGI应用程序和gevent工作人员,但是当我尝试使用Gunicorn从一个应用程序为这两者提供服务时,我会得到一个错误:
ValueError:视图函数没有返回响应
是否有可能通过一个应用程序为这两个人提供服务,使用gunicorn?我计划最终把这一切都抛在nginx的后面,我不反对将套接字拆分成另一个应用程序,让两个应用进行通信,只要这不需要太多额外的系统资源。在那之前,有办法这样做吗?
编辑:
我想出了如何让这件事奏效的办法。关键是: 1)更改gevent的日志记录函数;2)确保向gunicorn指定我使用的是geventWebSocketWorker类工作人员。
我在这个网站上找到了部分答案:http://d.hatena.ne.jp/Malan/20121007
为了记录在案,我认为最好是让一个服务器运行龙卷风/扭曲/高速公路(谢谢乔丹),另一个运行我的WSGI东西。但这不是我想要的
def log_request(self):
log = self.server.log
if log:
if hasattr(log, "info"):
log.info(self.format_request() + '\n')
else:
log.write(self.format_request() + '\n')
import gevent
gevent.pywsgi.WSGIHandler.log_request = log_request
from geventwebsocket.handler import WebSocketHandler
from gevent.pywsgi import WSGIServer
sudo gunicorn -c gunicorn_config.py -k "geventwebsocket.gunicorn.workers.GeventWebSocketWorker" router:app
发布于 2015-01-05 00:56:30
烧瓶-套筒可能会有帮助。
https://stackoverflow.com/questions/17635155
复制相似问题