I wonder if Nathaniel has something to add? Trio has a different approayto cancellation. Of course it is also an entirely new library...
On Tue, Jul 30, 2019 at 9:51 PM <[email protected]> wrote: > Oh only now it appears in the list ! I thought the post hadn't working, so > I posted again :/. > > I've fixed my "library" ( > https://github.com/aure-olli/aiokafka/blob/3acb88d6ece4502a78e230b234f47b90b9d30fd5/syncio.py), > and the `wrapped_consumer2` function. Now no double await, so no risk of > afterward cancellation. > > stop_future = asyncio.Future() > async def wrapped_consumer2(): > task = asyncio.ensure_future(consume_data()) > try: > await asyncio.wait([task, stop_future]) > finally: > task.cancel() > if not task.cancelled(): > return task.result() > else: > raise RuntimeError('stopped') > > Or > > import syncio > > async def wrapped_consumer(): > task = syncio.ensure_sync_future(consume_data()) > return await task > > stop_future = asyncio.Future() > async def wrapped_consumer2(): > task = syncio.ensure_sync_future(consume_data()) > try: > await syncio.sync_wait([task, stop_future]) > finally: > task.cancel() > if not task.cancelled(): > return task.result() > else: > raise RuntimeError('stopped') > > My only concern is that consistent cancellation state is currently almost > impossible with futures and tasks. The only two possibilities are either to > ignore cancellation (highly counter intuitive to use), or to directly > manipulate the coroutine as a generator (basically rewriting asyncio). > > Could be another library for sure, but the current state of asyncio makes > it really hard to reuse it. So it would mean copy-pasting the whole library > while changing few lines here and there. > _______________________________________________ > Python-ideas mailing list -- [email protected] > To unsubscribe send an email to [email protected] > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/[email protected]/message/4GROXASMFVVRG3UDB4LVMDXOQPU3KH5V/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido (mobile)
_______________________________________________ Python-ideas mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/VMRGZQT6TX5TPEB2OKLLRMREW3SZCXNF/ Code of Conduct: http://python.org/psf/codeofconduct/
