【发布时间】:2021-09-12 14:25:51
【问题描述】:
当我通过 gunicorn 运行项目时(命令:gunicorn --bind :8000 myproject.asgi:application),我收到此错误。
错误
Traceback (most recent call last):
File "/venv/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 136, in handle
self.handle_request(listener, req, client, addr)
File "/venv/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 179, in handle_request
respiter = self.wsgi(environ, resp.start_response)
TypeError: __call__() missing 1 required positional argument: 'send'
asgi.py
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings.base')
django_asgi_app = get_asgi_application()
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.security.websocket import AllowedHostsOriginValidator
from chats import routing
application = ProtocolTypeRouter({
"http": django_asgi_app,
"websocket": AllowedHostsOriginValidator(
AuthMiddlewareStack(
URLRouter(
routing.websocket_urlpatterns
)
)
),
})
chats.routing.py
from django.urls import re_path
from . import consumers
websocket_urlpatterns = [
re_path(r'ws/messages/(?P<username>[-:\w]+)/$', consumers.ChatConsumer.as_asgi()),
]
【问题讨论】:
-
提供更多详细信息:Django 版本,您是否使用某些云服务?.. 请查看此:stackoverflow.com/help/how-to-ask
-
我遇到了同样的问题,你找到解决办法了吗?
-
我已经在频道官方github网站上提交了一个问题:github.com/django/channels/issues/1735
标签: python django gunicorn django-channels asgi