[Python-Dev] asyncio: how to interrupt an async def w/ finally: ( e.g. Condition.wait() )
Guido van Rossum
guido at python.org
Sat Dec 19 20:00:00 EST 2015
More information about the Python-Dev mailing list
Sat Dec 19 20:00:00 EST 2015
- Previous message (by thread): [Python-Dev] asyncio: how to interrupt an async def w/ finally: ( e.g. Condition.wait() )
- Next message (by thread): [Python-Dev] Deadline for PythonFOSDEM 2016 is today.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, Dec 19, 2015 at 1:40 PM, Matthias Urlichs <matthias at urlichs.de> wrote: > On 19.12.2015 20:25, Guido van Rossum wrote: > > Perhaps you can add a check for a simple boolean 'stop' flag to your > > condition check, and when you want to stop the loop you set that flag > > and then call notify() on the condition. Then you can follow the > > standard condition variable protocol instead of all this nonsense. :-) > Your example does not work. > > > def stop_it(self): > > self.stopped = True > > self.uptodate.notify() > > self.uptodate needs to be locked before I can call .notify() on it. > Fair enough. > Creating a new task just for that seems like overkill, and I'd have to > add a generation counter to prevent a race condition. Doable, but ugly. > I guess that's due to some application logic, but whatever. You don't really seem to care about finding a solution for this problem anyways: > However, this doesn't fix the generic problem; Condition.wait() was just > what bit me today. > When a non-async generator goes out of scope, its finally: blocks will > execute. An async procedure call whose refcount reaches zero without > completing simply goes away; finally: blocks are *not* called and there > is *no* warning. > I consider that to be a bug. > If that's so, can you demonstrate that without invoking all these other things? Other traffic in this thread seems to indicate it may be not as simple as that. -- --Guido van Rossum (python.org/~guido) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20151219/d48e0475/attachment.html>
- Previous message (by thread): [Python-Dev] asyncio: how to interrupt an async def w/ finally: ( e.g. Condition.wait() )
- Next message (by thread): [Python-Dev] Deadline for PythonFOSDEM 2016 is today.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list