Message412062
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. |
|
Date |
User |
Action |
Args |
2022-01-29 09:01:39 | asvetlov | set | recipients:
+ asvetlov, yselivanov, bluecarrot |
2022-01-29 09:01:39 | asvetlov | set | messageid: <1643446899.76.0.102275094759.issue46568@roundup.psfhosted.org> |
2022-01-29 09:01:39 | asvetlov | link | issue46568 messages |
2022-01-29 09:01:39 | asvetlov | create | |
|