asyncio: enhance documentation of platform support

This commit is contained in:
Victor Stinner 2014-07-11 12:13:39 +02:00
parent 770e48d017
commit 778015b3bc
2 changed files with 26 additions and 9 deletions

View File

@ -24,6 +24,8 @@ the execution of the process.
Equivalent to calling ``get_event_loop_policy().new_event_loop()``. Equivalent to calling ``get_event_loop_policy().new_event_loop()``.
.. _asyncio-event-loops:
Available event loops Available event loops
--------------------- ---------------------
@ -57,6 +59,7 @@ Example to use a :class:`ProactorEventLoop` on Windows::
loop = asyncio.ProactorEventLoop() loop = asyncio.ProactorEventLoop()
asyncio.set_event_loop(loop) asyncio.set_event_loop(loop)
.. _asyncio-platform-support:
Platform support Platform support
---------------- ----------------
@ -70,21 +73,27 @@ Windows
Common limits of Windows event loops: Common limits of Windows event loops:
- :meth:`~BaseEventLoop.create_unix_server` and - :meth:`~BaseEventLoop.create_unix_server` and
:meth:`~BaseEventLoop.create_unix_server` are not supported: specific to UNIX :meth:`~BaseEventLoop.create_unix_server` are not supported: the socket
family :data:`socket.AF_UNIX` is specific to UNIX
- :meth:`~BaseEventLoop.add_signal_handler` and - :meth:`~BaseEventLoop.add_signal_handler` and
:meth:`~BaseEventLoop.remove_signal_handler` are not supported :meth:`~BaseEventLoop.remove_signal_handler` are not supported
- Pipes are not supported: :meth:`~BaseEventLoop.connect_read_pipe` and - :meth:`EventLoopPolicy.set_child_watcher` is not supported.
:meth:`~BaseEventLoop.connect_write_pipe` :class:`ProactorEventLoop` supports subprocesses. It has only one
- :meth:`EventLoopPolicy.set_child_watcher` is not supported implementation to watch child processes, there is no need to configure it.
:class:`SelectorEventLoop` specific limits: :class:`SelectorEventLoop` specific limits:
- :class:`~selectors.SelectSelector` is used but it only supports sockets, - :class:`~selectors.SelectSelector` is used but it only supports sockets,
see the `MSDN documentation of select see the `MSDN documentation of select
<http://msdn.microsoft.com/en-us/library/windows/desktop/ms740141%28v=vs.85%29.aspx>`_. <http://msdn.microsoft.com/en-us/library/windows/desktop/ms740141%28v=vs.85%29.aspx>`_
- it is not possible to execute subprocesses
- :meth:`~BaseEventLoop.add_reader` and :meth:`~BaseEventLoop.add_writer` only - :meth:`~BaseEventLoop.add_reader` and :meth:`~BaseEventLoop.add_writer` only
accept file descriptors of sockets accept file descriptors of sockets
- Pipes are not supported
(ex: :meth:`~BaseEventLoop.connect_read_pipe`,
:meth:`~BaseEventLoop.connect_write_pipe`)
- :ref:`Subprocesses <asyncio-subprocess>` are not supported
(ex: :meth:`~BaseEventLoop.subprocess_exec`,
:meth:`~BaseEventLoop.subprocess_shell`)
:class:`ProactorEventLoop` specific limits: :class:`ProactorEventLoop` specific limits:
@ -95,9 +104,10 @@ Common limits of Windows event loops:
not supported not supported
The resolution of the monotonic clock on Windows is usually around 15.6 msec. The resolution of the monotonic clock on Windows is usually around 15.6 msec.
The best resolution is 0.5 msec. The exact resolution depends on the hardware The best resolution is 0.5 msec. The resolution depends on the hardware
(availability of HPET) and the Windows configuration. See :ref:`asyncio delayed (availability of `HPET
calls <asyncio-delayed-calls>`. <http://fr.wikipedia.org/wiki/High_Precision_Event_Timer>`_) and on the Windows
configuration. See :ref:`asyncio delayed calls <asyncio-delayed-calls>`.
Mac OS X Mac OS X

View File

@ -1,5 +1,7 @@
.. currentmodule:: asyncio .. currentmodule:: asyncio
.. _asyncio-subprocess:
Subprocess Subprocess
========== ==========
@ -16,6 +18,11 @@ Example to use it on Windows::
loop = asyncio.ProactorEventLoop() loop = asyncio.ProactorEventLoop()
asyncio.set_event_loop(loop) asyncio.set_event_loop(loop)
.. seealso::
:ref:`Available event loops <asyncio-event-loops>` and :ref:`Platform
support <asyncio-platform-support>`.
Create a subprocess: high-level API using Process Create a subprocess: high-level API using Process
------------------------------------------------- -------------------------------------------------