Python Glossary English

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

asyncio.Transport

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

Двунаправленный транспорт asyncio: соединение, в которое можно и писать, и из которого читать. Объединяет ReadTransport и WriteTransport.

Синтаксис

transport.write(data); transport.close(); transport.abort(); transport.get_extra_info(name)

Транспорт не создают сами: его отдаёт цикл (loop.create_connection, create_server) или его можно достать из потока как writer.transport. Транспорт — это «как передать байты», а протокол — «что с ними делать»; данные приходят не возвратом из read(), а вызовом protocol.data_received(). close() дожидается отправки буфера, а abort() бросает его и рвёт соединение сразу; после close() is_closing() уже True, хотя сокет закроется на следующей итерации цикла.

Примеры

import asyncio
import socket
async def main():
    a, b = socket.socketpair()
    reader, writer = await asyncio.open_connection(sock=a)
    t = writer.transport
    print(isinstance(t, asyncio.Transport))  # → True
    print(isinstance(t, asyncio.ReadTransport), isinstance(t, asyncio.WriteTransport))  # → True True
    print(t.is_closing())  # → False
    t.close()
    print(t.is_closing())  # → True — закрытие уже начато
    await asyncio.sleep(0.01)
    b.close()
asyncio.run(main())

См. также

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