Andrew Svetlov <andrew.svet...@gmail.com> added the comment:
Your code has at least one concurrency problem. Let's look back at forward_stream() function: async def forward_stream(reader: StreamReader, writer: StreamWriter, event: asyncio.Event, source: str): writer_drain = writer.drain() # <--- awaitable is created here while not event.is_set(): try: data = await asyncio.wait_for(reader.read(1024), 1) # <-- CancelledError can be caught here, stack unwinds and writer_drain is never awaited, sure. except asyncio.TimeoutError: continue ... # the rest is not important for this case To solve the problem, you should create writer_drain *before its awaiting*, not before another 'await' call. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue46568> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com