如何通过uWSGI使用gevent-socketio的SocketIOServer来管理我的Django应用程序?
我有以下uWSGI .ini文件:
[uwsgi]
socket = 127.0.0.1:3031
master = true
processes = 2
env = DJANGO_SETTINGS_MODULE=demo.settings
module = app:serve
然后我有以下app.py
:
from gevent import monkey
from socketio.server import SocketIOServer
import django.core.handlers.wsgi
import os
import sys
monkey.patch_all()
PORT = 3031
os.environ['DJANGO_SETTINGS_MODULE'] = 'demo.settings'
def serve():
application = django.core.handlers.wsgi.WSGIHandler()
SocketIOServer(('', PORT), application, namespace="socket.io").serve_forever()
但它只是继续加载,基本上我的问题是如何告诉uWSGI在服务时使用SocketIOServer?
答案 0 :(得分:2)
目前尚不清楚您是否希望uWSGI同时提供服务,或者您希望使用socketio服务器进行额外的处理。
通常你不能在同一个进程中混合阻塞应用程序(如django)和非阻塞(如基于gevent),即使你使用猴子修补程序,你的数据库适配器也不会被monkeypatched(除非你使用的是本机python) -adapter,这在django中并不常见。)
所以我想你想把SocketIOServer产生为一个不同的进程。只需将最后两行移出serve(),这样uwsgi导入器就会解析/运行两个