[Python-Dev] PEP 525, fourth update
Yury Selivanov
yselivanov.ml at gmail.com
Wed Sep 7 12:33:15 EDT 2016
Thank you, Guido!
I've updated the PEP to make shutdown_asyncgens a coroutine, as we
discussed.
Yury
On 2016-09-06 7:10 PM, Guido van Rossum wrote:
> Thanks Yury!
>
> I am hereby accepting PEP 525 provisionally. The acceptance is so that
> you can go ahead and merge this into 3.6 before the feature freeze
> this weekend. The provisional status is because this is a big project
> and it's likely that we'll need to tweak some small aspect of the API
> once the code is in, even after 3.6.0 is out. (Similar to the way PEP
> 492, async/await, was accepted provisionally.) But I am cautiously
> optimistic and I am grateful to Yury for the care and effort he has
> put into it.
>
> --Guido
>
> On Tue, Sep 6, 2016 at 5:10 PM, Yury Selivanov <yselivanov.ml at gmail.com> wrote:
>> Hi,
>>
>> I've updated PEP 525 with a new section about asyncio changes.
>>
>> Essentially, asyncio event loop will get a new "shutdown_asyncgens" method
>> that allows to close the loop and all associated AGs with it reliably.
>>
>> Only the updated section is pasted below:
>>
>>
>> asyncio
>> -------
>>
>> The asyncio event loop will use ``sys.set_asyncgen_hooks()`` API to
>> maintain a weak set of all scheduled asynchronous generators, and to
>> schedule their ``aclose()`` coroutine methods when it is time for
>> generators to be GCed.
>>
>> To make sure that asyncio programs can finalize all scheduled
>> asynchronous generators reliably, we propose to add a new event loop
>> method ``loop.shutdown_asyncgens(*, timeout=30)``. The method will
>> schedule all currently open asynchronous generators to close with an
>> ``aclose()`` call.
>>
>> After calling the ``loop.shutdown_asyncgens()`` method, the event loop
>> will issue a warning whenever a new asynchronous generator is iterated
>> for the first time. The idea is that after requesting all asynchronous
>> generators to be shutdown, the program should not execute code that
>> iterates over new asynchronous generators.
>>
>> An example of how ``shutdown_asyncgens`` should be used::
>>
>> try:
>> loop.run_forever()
>> # or loop.run_until_complete(...)
>> finally:
>> loop.shutdown_asyncgens()
>> loop.close()
>>
>> -
>> Yury
>> _______________________________________________
>> Python-Dev mailing list
>> Python-Dev at python.org
>> https://mail.python.org/mailman/listinfo/python-dev
>> Unsubscribe:
>> https://mail.python.org/mailman/options/python-dev/guido%40python.org
>
>
More information about the Python-Dev
mailing list