-
-
Notifications
You must be signed in to change notification settings - Fork 31.6k
gh-96377: Update asyncio policy doc intro paras to be clear and accurate #97603
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
2374250
cff4ed8
c7e4117
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,22 +7,29 @@ | |
Policies | ||
======== | ||
|
||
An event loop policy is a global per-process object that controls | ||
the management of the event loop. Each event loop has a default | ||
policy, which can be changed and customized using the policy API. | ||
|
||
A policy defines the notion of *context* and manages a | ||
separate event loop per context. The default policy | ||
defines *context* to be the current thread. | ||
|
||
By using a custom event loop policy, the behavior of | ||
:func:`get_event_loop`, :func:`set_event_loop`, and | ||
:func:`new_event_loop` functions can be customized. | ||
An event loop policy is a global (per-interpreter) object | ||
used to get and set the current :ref:`event loop <asyncio-event-loop>`, | ||
as well as create new event loops. | ||
The default policy can be :ref:`replaced <asyncio-policy-get-set>` with | ||
:ref:`built-in alternatives <asyncio-policy-builtin>` | ||
to use different event loop implementations, | ||
or substituted by a :ref:`custom policy <asyncio-custom-policies>` | ||
that can override these behaviors. | ||
|
||
The :ref:`policy object <asyncio-policy-objects>` | ||
gets and sets a separate event loop per *context*. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should/could context link to anything? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps we should add -- in a separate PR -- a concise list of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If we did so as a proper Sphinx There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good luck defining context. It has at least four unrelated uses/meanings:
|
||
This is per-thread by default, | ||
though custom policies could define *context* differently. | ||
|
||
Custom event loop policies can control the behavior of | ||
:func:`get_event_loop`, :func:`set_event_loop`, and :func:`new_event_loop`. | ||
|
||
Policy objects should implement the APIs defined | ||
in the :class:`AbstractEventLoopPolicy` abstract base class. | ||
|
||
|
||
.. _asyncio-policy-get-set: | ||
|
||
Getting and Setting the Policy | ||
============================== | ||
|
||
|
@@ -40,6 +47,8 @@ for the current process: | |
If *policy* is set to ``None``, the default policy is restored. | ||
|
||
|
||
.. _asyncio-policy-objects: | ||
|
||
Policy Objects | ||
============== | ||
|
||
|
@@ -86,6 +95,8 @@ The abstract event loop policy base class is defined as follows: | |
This function is Unix specific. | ||
|
||
|
||
.. _asyncio-policy-builtin: | ||
|
||
asyncio ships with the following built-in policies: | ||
|
||
|
||
|
@@ -117,6 +128,7 @@ asyncio ships with the following built-in policies: | |
|
||
.. availability:: Windows. | ||
|
||
|
||
.. _asyncio-watchers: | ||
|
||
Process Watchers | ||
|
@@ -270,6 +282,8 @@ implementation used by the asyncio event loop: | |
.. versionadded:: 3.9 | ||
|
||
|
||
.. _asyncio-custom-policies: | ||
|
||
Custom Policies | ||
=============== | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know the details here are hard to understand but "per-interpreter" can give false sense that
asyncio
can work under multiple interpreters. It doesn't since it caches the thread id and does not checks the interp id. It would be better to removeper-interpreter
altogether here.See #91375
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, you're right, I remember now. We should add a note to that issue to add "per-interpreter" back here once that's been fixed. (It's not rocket science to fix it, IIRC, just work?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh and since this is already merged we'd need a new PR. :-(
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Okay done #97618