Python Glossary English

все Python 3до 3.12Удалено из стандартной библиотекипонятие

asyncore

удалённые модули

Модуль асинхронных сокетов на базе select() с классом dispatcher. Удалён в Python 3.12 — используйте asyncio.

Синтаксис

import asyncore  # до 3.12

asyncore — основа старой событийной сети на select(): наследник asyncore.dispatcher переопределял handle_read() и handle_write(), а asyncore.loop() крутил цикл. Его вытеснил asyncio, поэтому модуль объявили устаревшим в Python 3.6 и по PEP 594 убрали в 3.12. Как переписать: вместо dispatcher и loop() напишите корутину-обработчик с StreamReader и StreamWriter, сервер поднимите через asyncio.start_server(), клиент — через asyncio.open_connection(), запуск — asyncio.run(). Пакет pyasyncore на PyPI возвращает старый модуль, но новый код пишите на asyncio.

Примеры

# Python 3.12+
try:
    import asyncore
except ModuleNotFoundError as e:
    print(type(e).__name__)  # → ModuleNotFoundError
# Python 3.12+
import asyncio, socket
async def main():
    a, b = socket.socketpair()
    reader, writer = await asyncio.open_connection(sock=a)
    peer_reader, peer_writer = await asyncio.open_connection(sock=b)
    writer.write(b'ping')
    await writer.drain()
    data = await peer_reader.read(4)
    print(data)  # → b'ping'
    writer.close()
    peer_writer.close()
asyncio.run(main())

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности