【问题标题】:django-websocket-redis development server not workingdjango-websocket-redis 开发服务器不工作
【发布时间】:2016-12-23 17:31:50
【问题描述】:

我正在开发一个 Django 应用,它使用 django-websocket-redis 应用从服务器端发布事件。

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

根据django-websocket-redisdocumentation的说法,启动Django开发服务器就足够了,一切都应该可以正常工作,但这似乎与现实相去甚远。

这是我检查过的:

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

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

有人知道我做错了什么吗?谢谢!

【问题讨论】:

    标签: django websocket redis


    【解决方案1】:

    我找到了解决方法。

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

    更新:不需要像我之前提到的那样创建自定义管理命令,所以我已经删除了答案的那部分。

    【讨论】:

      猜你喜欢
      • 2017-11-17
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 2016-01-06
      • 2016-09-09
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多