Code below has been written with the intension of acquiring ONLY one lock. There are two issues:
1- Sometimes it returns more than one lock in done. 2- Sometimes, even if wait exits with zero or one locks, it seems there are other locks are acquired too. Though, I couldn't isolate the exact case for this. It sounds like some background shield() is at works. I kindly request your comments. locks = [some asyncio.Locks...] sel = [Pack(l.acquire(), l) for l in locks] done, pend = asyncio.wait(sel, timeout=10, return_when=FIRST_COMPLETED) ... @coroutine def Pack(co, obj): yield from co return obj Regards, Imran _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com