django-websocket-redis开发服务器无法正常工作

时间:2016-12-22 20:29:33

标签: django websocket redis

我正在使用Django应用程序,该应用程序使用django-websocket-redis应用程序从服务器端发布事件。

我已成功使用nginxuWSGI配置测试服务器,以便将HTTP和WS请求正确地路由到我的Django应用程序,但在我的本地开发环境中,我无法正常工作。

根据django-websocket-redis documentation,它足以启动Django开发服务器,一切都应该可以正常工作,但似乎这远离现实。

以下是我检查的内容:

  • redis正在localhost:6379上运行,并且正在响应PING次请求
  • 尝试在不同的端口(80,8080,8000)上运行服务器以检查django-websocket-redis是否对开发服务器端口做出任何假设,但没有改变
  • 在线搜索解决方案,但此主题没有任何内容

在我的客户端本地环境中,当我的应用程序尝试连接到本地WebSocket时,我看到404错误。我的settings.pyWEBSOCKET_URL设置为正确的网址(在测试服务器上它正常工作,但本地不是)。

任何人都知道我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

我已将我的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()

更新:如前所述,我们不需要创建自定义管理命令,因此我已删除了部分答案。