TypeError: В django-channels требуется asyncio.Future, coroutine или awaitable
Требования
- Python 3.8
- asgiref 3.2.0
- channels 2.4.0
- channels-redis 2.4.2
- Django 3.0.9,
- gunicorn 20.1.0
- redis 3.5.3
- uvicorn 0.11.5
- websockets 8.1
Я запускаю каналы как gunicorn -w 5 -b 0.0.0.0:8000 --log-level debug -k uvicorn.workers.UvicornWorker config.asgi:application
.
Также у меня есть nginx
в качестве прокси-сервера.
Журналы
class TokenAuthMiddleware:
def __init__(self, inner):
self.inner = inner
def __call__(self, scope):
return TokenAuthMiddlewareInstance(scope, self)
class TokenAuthMiddlewareInstance:
def __init__(self, scope, middleware):
self.middleware = middleware
self.scope = dict(scope)
self.inner = self.middleware.inner
async def __call__(self, receive, send):
try:
token_key = (dict((x.split("=") for x in self.scope["query_string"].decode().split("&")))).get(
"token", None
)
except ValueError:
token_key = None
if token_key is None:
self.scope["user"] = AnonymousUser()
else:
token_data = await get_token_data(token_key)
self.scope["user"] = await get_user(token_data["user_id"])
inner = self.inner(self.scope)
return await inner(receive, send)