我正在开发一个Django应用程序,它使用django-websocket-redis应用程序发布服务器端的事件。
我已经成功地配置了一个使用nginx和uWSGI的测试服务器来正确地将HTTP请求路由到我的Django应用程序,但是在我的本地开发环境中,我无法做到这一点。
根据django-websocket-redis 文档,启动Django开发服务器就足够了,一切都应该正常工作,但这似乎与现实相去甚远。
这是我查过的:
localhost:6379上,并响应PING请求。django-websocket-redis是否对开发服务器的端口作了任何假设,但没有发生任何变化在客户端的本地环境中,当我的应用程序试图连接到本地WebSocket时,我会看到一个404错误。我的settings.py将WEBSOCKET_URL设置为正确的WEBSOCKET_URL(在测试服务器上它正在工作,但在本地不工作)。
有人知道我做错了什么吗?谢谢!
发布于 2016-12-22 22:39:20
我找到了解决办法。
我已经修改了我的wsgi.py,它现在起作用了:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
from django.conf import settings
from ws4redis.django_runserver import WebsocketRunServer
if settings.DEBUG:
_django_app = get_wsgi_application()
_websocket_app = WebsocketRunServer()
def application(environ, start_response):
if environ.get('PATH_INFO').startswith(settings.WEBSOCKET_URL):
return _websocket_app(environ, start_response)
return _django_app(environ, start_response)
else:
application = get_wsgi_application()更新:不需要像我前面提到的那样创建自定义管理命令,所以我删除了答案的这一部分。
https://stackoverflow.com/questions/41291206
复制相似问题