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