Поддержка платформ¶
Модуль asyncio разработан так, чтобы быть портабельным, но некоторые
платформы имеют незначительные отличия и ограничения из-за основной архитектуры и
возможностей платформ.
Все платформы¶
loop.add_reader()иloop.add_writer()не могут быть используемый для мониторинга операций файлового I/O.
Windows¶
Source code: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py
Изменено в версии 3.8: В Windows ProactorEventLoop теперь является событийным циклом по умолчанию.
Событийные циклы в Windows не поддерживают следующие методы:
loop.create_unix_connection()иloop.create_unix_server()не поддерживаются. Семейство сокетовsocket.AF_UNIXспецифичных для Unix.loop.add_signal_handler()иloop.remove_signal_handler()не поддерживаются.
SelectorEventLoop имеет следующие ограничения
SelectSelectorиспользуется для ожидания событий сокета: он поддерживает сокеты и ограничен 512 сокетами.loop.add_reader()иloop.add_writer()принимают только дескрипторы сокетов (например, дескрипторы файлов пайпов не поддерживаются).- Пайпы не поддерживаются, поэтому 
loop.connect_read_pipe()иloop.connect_write_pipe()методы не реализованы. - Subprocesses не поддержаны, т.е. 
loop.subprocess_exec()иloop.subprocess_shell()методы не реализованы. 
ProactorEventLoop имеет следующие ограничения
loop.add_reader()loop.add_writer()и методы не поддерживаются.
Разрешение монотонных часов на Windows обычно около 15,6 мс. Лучшее разрешение - 0,5 мс. Разрешение зависит от оборудования (доступности HPET) и конфигурации Windows.
Поддержка подпроцессов в Windows¶
В Windows событийный цикл по умолчанию ProactorEventLoop поддерживает подпроцессы, в то
время как SelectorEventLoop - нет.
Функция policy.set_child_watcher() также
не поддерживается, так как ProactorEventLoop имеет другой
механизм наблюдения за дочерними процессами.
MacOS¶
Современные версии macOS поддерживаются полностью.
macOS <= 10.8
В macOS 10.6, 10.7 и 10.8 событийный цикл по умолчанию использует selectors.KqueueSelector,
который в этих версиях не поддерживает символьные устройства. Для SelectorEventLoop
можно вручную настроить использование SelectSelector или PollSelector для поддержки
символьных устройств в этих старых версиях macOS. Пример:
import asyncio
import selectors
selector = selectors.SelectSelector()
loop = asyncio.SelectorEventLoop(selector)
asyncio.set_event_loop(loop)
