Python Glossary English

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

asyncio.start_unix_server()

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

Запускает сервер на Unix-сокете — файле в файловой системе; колбэк получает пару (StreamReader, StreamWriter).

Синтаксис

server = await asyncio.start_unix_server(client_connected_cb, path=None, *, limit=2**16, **kwds)

Файл сокета создаётся при старте, и до 3.13 он оставался на диске после закрытия: следующий запуск падал с OSError «Address already in use», пока файл не удалят руками. С 3.13 cleanup_socket=True убирает его сам. Доступ к сокету — это права на файл, так что сервер виден лишь тем пользователям, кому можно его открыть; сеть при этом не участвует вовсе. Доступна только на Linux и macOS: на Windows Unix-сокетов у asyncio нет.

Примеры

import asyncio
import os
async def upper(reader, writer):
    writer.write((await reader.read(10)).upper())
    await writer.drain()
    writer.close()
async def main():
    server = await asyncio.start_unix_server(upper, 'app.sock')
    print(os.path.exists('app.sock'))  # → True — сокет это файл
    async with server:
        reader, writer = await asyncio.open_unix_connection('app.sock')
        writer.write(b'ok')
        print(await reader.read())  # → b'OK'
        writer.close()
        await writer.wait_closed()
    if os.path.exists('app.sock'):  # до 3.13 файл остаётся
        os.remove('app.sock')
asyncio.run(main())

См. также

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