推送到heroku时Django通道2路由问题

2024-06-17 15:48:29 发布

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

我有一个wsgi项目,其中添加了asgi/通道组件。当我在python3 manage.py runserver中运行它时,当我在ngrok.io上使用websocket测试仪时,我能够获得websocket连接。My ngrok.io随后显示:

GET  /ws/                      101 Switching Protocols

但当我使用heroku local或将其推送到他们的云中时,会显示“/ws/”未找到:

9:12:04 PM web.1 |  [2019-12-20 21:12:04 -0800] [5123] [INFO] Starting gunicorn 19.9.0
9:12:04 PM web.1 |  [2019-12-20 21:12:04 -0800] [5123] [INFO] Listening at: http://0.0.0.0:5000 (5123)
9:12:04 PM web.1 |  [2019-12-20 21:12:04 -0800] [5123] [INFO] Using worker: sync
9:12:04 PM web.1 |  [2019-12-20 21:12:04 -0800] [5126] [INFO] Booting worker with pid: 5126
9:12:10 PM web.1 |  Not Found: /ws/

看起来它在寻找我服务器的wsgi端。(?)但是我的websocket在asgi端

GET/ws/400错误请求

my requirements.txt由以下部分组成

Django==2.2.6
django-heroku==0.3.1
daphne==2.4.0
gunicorn==19.9.0
requests==2.22.0
channels==2.3.1

我的routing.py

application = ProtocolTypeRouter({
    "websocket": URLRouter([
        path('ws/', backEndConsumer),
    ])
})

而我的url.py

urlpatterns = [
    path('webhook/', views.webhook, name='webhook'),
]

my settings.py是https://justpaste.it/78n46 既然代码没有什么不同,那么可能是环境的不同。我的pip3冻结有很多文件,所以我不确定我是否能找出缺少的依赖项(如果有的话)https://justpaste.it/3r5wd

也许我不该用gunicorn换成daphne?但是我当前的设置在python3上运行得很好,为什么我在heroku上运行它时它不工作呢


Tags: pyioinfowsgigetherokuwswebhook