Hi there, I am using Channels 2.1.7 with Python 3.7.2. My consumer does this on connect:
async def connect(self): """Accept connect if user has been provided by middleware""" self.user = self.scope.get('user') if self.user: await self.accept() else: await self.close() When `self.close()` is called, an exception is raised: Traceback (most recent call last): File "/opt/sps/.venv/lib/python3.7/site-packages/uvicorn/protocols/websockets/websockets_impl.py" , line 147, in run_asgi result = await asgi(self.asgi_receive, self.asgi_send) File "/opt/sps/.venv/lib/python3.7/site-packages/channels/consumer.py", line 59, in __call__ [receive, self.channel_receive], self.dispatch File "/opt/sps/.venv/lib/python3.7/site-packages/channels/utils.py", line 59, in await_many_dispatch await task File "/opt/sps/.venv/lib/python3.7/site-packages/channels/utils.py", line 51, in await_many_dispatch result = task.result() File "/opt/sps/.venv/lib/python3.7/site-packages/uvicorn/protocols/websockets/websockets_impl.py" , line 227, in asgi_receive data = await self.recv() File "/opt/sps/.venv/lib/python3.7/site-packages/websockets/protocol.py", line 420, in recv return_when=asyncio.FIRST_COMPLETED, File "/usr/local/lib/python3.7/asyncio/tasks.py", line 361, in wait fs = {ensure_future(f, loop=loop) for f in set(fs)} File "/usr/local/lib/python3.7/asyncio/tasks.py", line 361, in <setcomp> fs = {ensure_future(f, loop=loop) for f in set(fs)} File "/usr/local/lib/python3.7/asyncio/tasks.py", line 592, in ensure_future raise TypeError('An asyncio.Future, a coroutine or an awaitable is ' TypeError: An asyncio.Future, a coroutine or an awaitable is required The relevant code seems to be this: while len(self.messages) <= 0: pop_message_waiter = asyncio.Future(loop=self.loop) self._pop_message_waiter = pop_message_waiter try: # If asyncio.wait() is canceled, it doesn't cancel # pop_message_waiter and self.transfer_data_task. tasks = [pop_message_waiter, self.transfer_data_task] yield from asyncio.wait( tasks, loop=self.loop, return_when=asyncio.FIRST_COMPLETED, ) finally: self._pop_message_waiter = None In websockets/protocol.py line 410 and ss, `self.trasfer_data_task` is `None`. If I remove it from the wait list it seems to work. Any ideas? Thanks in advance, Rodrigo -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/d92a08a5-1080-4212-9cea-e46c53c4f3ba%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.