Python Glossary English

Python 3.4+Linux · macOSАсинхронное программированиефункция

asyncio.open_unix_connection()

потоки ввода-вывода

Подключается к Unix-сокету по пути в файловой системе и возвращает пару (StreamReader, StreamWriter).

Синтаксис

reader, writer = await asyncio.open_unix_connection(path=None, *, limit=2**16, **kwds)

Работает как open_connection, но вместо хоста и порта — путь к файлу сокета; так общаются с локальными службами вроде Docker или PostgreSQL. Путь ограничен примерно 107 байтами, и длинный абсолютный путь даёт OSError; относительный путь отсчитывается от текущего каталога. Если файла нет, бросается FileNotFoundError, если никто не слушает — ConnectionRefusedError. Доступна только на Linux и macOS: на Windows Unix-сокетов у asyncio нет.

Примеры

import asyncio
async def main():
    try:
        await asyncio.open_unix_connection('нет-такого.sock')
    except FileNotFoundError:
        print('сокета нет')  # → сокета нет
asyncio.run(main())
import asyncio
async def hello(reader, writer):
    writer.write(b'hi')
    await writer.drain()
    writer.close()
async def main():
    async with await asyncio.start_unix_server(hello, 'demo.sock'):
        reader, writer = await asyncio.open_unix_connection('demo.sock')
        print(await reader.read())  # → b'hi'
        writer.close()
        await writer.wait_closed()
asyncio.run(main())

См. также

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