Python Glossary English

Python 3.4+Асинхронное программированиепонятие

asyncio.BaseProtocol

протоколы и транспорты

Базовый класс всех протоколов asyncio: колбэки connection_made(), connection_lost(), pause_writing() и resume_writing(), которые вызывает транспорт.

Синтаксис

class MyProto(asyncio.Protocol): def connection_made(self, transport): ...

Учащемуся этот уровень обычно не нужен: для TCP есть потоки asyncio.open_connection() и asyncio.start_server(), для процессов — asyncio.create_subprocess_exec(). Напрямую от BaseProtocol не наследуются — берут Protocol, BufferedProtocol, DatagramProtocol или SubprocessProtocol. Его методы — колбэки: их зовёт цикл, а не ваш код, они обычные функции (не async def), и await внутри них невозможен — долгую работу из колбэка запускают asyncio.create_task().

Примеры

import asyncio
print([c.__name__ for c in asyncio.Protocol.__mro__])  # → ['Protocol', 'BaseProtocol', 'object']
print(issubclass(asyncio.DatagramProtocol, asyncio.BaseProtocol))  # → True
async def main():
    await asyncio.sleep(0.01)
asyncio.run(main())

См. также

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