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 в качестве прокси-сервера.

Журналы image

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)
Вернуться на верх