Message332165
It seems impossible to correctly close() an asyncio Process on which terminate has been invoked. Take the following coroutine:
async def test():
proc = await asyncio.create_subprocess_shell(
"sleep 1", stdout=asyncio.subprocess.PIPE)
proc.terminate()
await proc.wait()
After running it with asyncio.run(), Python prints a warning about "Event loop is closed" exception ignored in BaseSubprocessTransport.__del__. The code does wait for the process to exit, and neither proc nor proc.stdout have a close() method, so the warning seems spurious.
Commenting out proc.terminate() makes the program finish without an exception (but then it waits for a full second, of course).
Runnable example attached. |
|
Date |
User |
Action |
Args |
2018-12-19 20:35:52 | hniksic | set | recipients:
+ hniksic, asvetlov, yselivanov |
2018-12-19 20:35:52 | hniksic | set | messageid: <1545251752.03.0.788709270274.issue35539@psf.upfronthosting.co.za> |
2018-12-19 20:35:51 | hniksic | link | issue35539 messages |
2018-12-19 20:35:51 | hniksic | create | |
|