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Сообщить о неточности