raise RuntimeError('您需要使用eventlet服务器。'

2024-04-20 14:36:07 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的项目中,我创建了一个app

website_chat/views.py代码:

async_mode = 'eventlet'

import os

from django.http import HttpResponse
import socketio

basedir = os.path.dirname(os.path.realpath(__file__))
sio = socketio.Server(async_mode=async_mode)
thread = None

website_chat/management/commands/runserver.py

^{pr2}$

在我的wsgi.py中:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Qiyun02.settings")

from socketio import Middleware
from website_chat.views import sio
django_app = get_wsgi_application()
application = Middleware(sio, django_app)

但是当我运行服务器时,我得到如下错误:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/wsgiref/handlers.py", line 137, in run
    self.result = application(self.environ, self.start_response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/contrib/staticfiles/handlers.py", line 63, in __call__
    return self.application(environ, start_response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/engineio/middleware.py", line 47, in __call__
    return self.engineio_app.handle_request(environ, start_response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/socketio/server.py", line 360, in handle_request
    return self.eio.handle_request(environ, start_response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/engineio/server.py", line 274, in handle_request
    environ, start_response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/engineio/socket.py", line 91, in handle_get_request
    start_response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/engineio/socket.py", line 133, in _upgrade_websocket
    return ws(environ, start_response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/engineio/async_eventlet.py", line 15, in __call__
    raise RuntimeError('You need to use the eventlet server. '
RuntimeError: You need to use the eventlet server. See the Deployment section of the documentation for more information.

但是在website_chat/views.py中,我配置了:

async_mode = 'eventlet'
sio = socketio.Server(async_mode=async_mode)

为什么我仍然得到这个错误?在

文件在那里:https://github.com/miguelgrinberg/python-socketio/blob/master/docs/index.rst#eventlet


Tags: inpyimportasyncresponseliblinelibrary
1条回答
网友
1楼 · 发布于 2024-04-20 14:36:07

最后,我没有遵循python-socketio的例子,而是像下面这样配置wsgi.py

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Qyun.settings")

from socketio import Middleware
from website_chat.views import sio
django_app = get_wsgi_application()
application = Middleware(sio, django_app)

#
import eventlet
import eventlet.wsgi
eventlet.wsgi.server(eventlet.listen(('', 8000)), application)

它现在适用于这个问题。端口仍然是8000,现在也可以删除{}。在

相关问题 更多 >