add files
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
.. currentmodule:: asyncio
|
||||
|
||||
|
||||
.. _asyncio-platform-support:
|
||||
|
||||
|
||||
================
|
||||
Platform Support
|
||||
================
|
||||
|
||||
The :mod:`asyncio` module is designed to be portable,
|
||||
but some platforms have subtle differences and limitations
|
||||
due to the platforms' underlying architecture and capabilities.
|
||||
|
||||
|
||||
All Platforms
|
||||
=============
|
||||
|
||||
* :meth:`loop.add_reader` and :meth:`loop.add_writer`
|
||||
cannot be used to monitor file I/O.
|
||||
|
||||
|
||||
Windows
|
||||
=======
|
||||
|
||||
All event loops on Windows do not support the following methods:
|
||||
|
||||
* :meth:`loop.create_unix_connection` and
|
||||
:meth:`loop.create_unix_server` are not supported.
|
||||
The :data:`socket.AF_UNIX` socket family is specific to Unix.
|
||||
|
||||
* :meth:`loop.add_signal_handler` and
|
||||
:meth:`loop.remove_signal_handler` are not supported.
|
||||
|
||||
:class:`SelectorEventLoop` has the following limitations:
|
||||
|
||||
* :class:`~selectors.SelectSelector` is used to wait on socket events:
|
||||
it supports sockets and is limited to 512 sockets.
|
||||
|
||||
* :meth:`loop.add_reader` and :meth:`loop.add_writer` only accept
|
||||
socket handles (e.g. pipe file descriptors are not supported).
|
||||
|
||||
* Pipes are not supported, so the :meth:`loop.connect_read_pipe`
|
||||
and :meth:`loop.connect_write_pipe` methods are not implemented.
|
||||
|
||||
* :ref:`Subprocesses <asyncio-subprocess>` are not supported, i.e.
|
||||
:meth:`loop.subprocess_exec` and :meth:`loop.subprocess_shell`
|
||||
methods are not implemented.
|
||||
|
||||
:class:`ProactorEventLoop` has the following limitations:
|
||||
|
||||
* The :meth:`loop.create_datagram_endpoint` method
|
||||
is not supported.
|
||||
|
||||
* The :meth:`loop.add_reader` and :meth:`loop.add_writer`
|
||||
methods are not supported.
|
||||
|
||||
The resolution of the monotonic clock on Windows is usually around 15.6
|
||||
msec. The best resolution is 0.5 msec. The resolution depends on the
|
||||
hardware (availability of `HPET
|
||||
<https://en.wikipedia.org/wiki/High_Precision_Event_Timer>`_) and on the
|
||||
Windows configuration.
|
||||
|
||||
|
||||
.. _asyncio-windows-subprocess:
|
||||
|
||||
Subprocess Support on Windows
|
||||
-----------------------------
|
||||
|
||||
:class:`SelectorEventLoop` on Windows does not support subproceses.
|
||||
On Windows, :class:`ProactorEventLoop` should be used instead::
|
||||
|
||||
import asyncio
|
||||
|
||||
asyncio.set_event_loop_policy(
|
||||
asyncio.WindowsProactorEventLoopPolicy())
|
||||
|
||||
asyncio.run(your_code())
|
||||
|
||||
|
||||
The :meth:`policy.set_child_watcher()
|
||||
<AbstractEventLoopPolicy.set_child_watcher>` function is also
|
||||
not supported, as :class:`ProactorEventLoop` has a different mechanism
|
||||
to watch child processes.
|
||||
|
||||
|
||||
macOS
|
||||
=====
|
||||
|
||||
Modern macOS versions are fully supported.
|
||||
|
||||
.. rubric:: macOS <= 10.8
|
||||
|
||||
On macOS 10.6, 10.7 and 10.8, the default event loop
|
||||
uses :class:`selectors.KqueueSelector`, which does not support
|
||||
character devices on these versions. The :class:`SelectorEventLoop`
|
||||
can be manually configured to use :class:`~selectors.SelectSelector`
|
||||
or :class:`~selectors.PollSelector` to support character devices on
|
||||
these older versions of macOS. Example::
|
||||
|
||||
import asyncio
|
||||
import selectors
|
||||
|
||||
selector = selectors.SelectSelector()
|
||||
loop = asyncio.SelectorEventLoop(selector)
|
||||
asyncio.set_event_loop(loop)
|
Reference in New Issue
Block a user