[New-bugs-announce] [issue33638] condition lock not re-acquired

christof report at bugs.python.org
Thu May 24 15:10:23 EDT 2018


New submission from christof <chbailly at 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 <report at bugs.python.org>
<https://bugs.python.org/issue33638>
_______________________________________


More information about the New-bugs-announce mailing list