Andrew Svetlov <[email protected]> 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 <[email protected]>
<https://bugs.python.org/issue46568>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com