New submission from christof <chbai...@gmail.com>: Hello,
I have a simple code which triggers a timeout if a task did not complete import asyncio async def task_timeout(): condition = asyncio.Condition() with await condition: try: await asyncio.wait_for(condition.wait(), timeout=4) except asyncio.TimeoutError as e: print("timeout reached") # uncomment this line to make the code work # await asyncio.sleep(0) f = asyncio.ensure_future(task_timeout()) loop= asyncio.get_event_loop() loop.run_until_complete(f) It throws an exception when leaving the scope for the condition because it expects the lock to be acquired: RuntimeError: Lock is not acquired. If you uncomment the line to sleep, it will work because it will continue in the coroutine Condition.wait and call: yield from self.acquire() => locks.py line 355 I think this is a bug and that this behaviour is not the expected one. ---------- components: asyncio messages: 317604 nosy: asvetlov, christof, yselivanov priority: normal severity: normal status: open title: condition lock not re-acquired type: behavior versions: Python 3.6 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue33638> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com