Конфигурация и операции
Блокировка шлюза
Последнее обновление: 2025-12-11
Зачем
- Гарантировать, что на одном хосте на одном базовом порте работает только один экземпляр шлюза; дополнительные шлюзы должны использовать изолированные профили и уникальные порты.
- Переживать аварийные завершения/SIGKILL без оставления устаревших файлов блокировки.
- Быстро завершаться с понятной ошибкой, когда управляющий порт уже занят.
Механизм
- Шлюз сразу при запуске привязывает слушатель WebSocket (по умолчанию
ws://127.0.0.1:18789) с использованием эксклюзивного TCP-слушателя. - Если привязка завершается с ошибкой
EADDRINUSE, запуск прерывается сGatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>"). - ОС автоматически освобождает слушатель при любом завершении процесса, включая аварийные завершения и SIGKILL — отдельный файл блокировки или шаг очистки не требуются.
- При завершении работы шлюз закрывает WebSocket-сервер и базовый HTTP-сервер, чтобы оперативно освободить порт.
Поверхность ошибок
- Если порт занят другим процессом, запуск прерывается с
GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>"). - Другие ошибки привязки отображаются как
GatewayLockError("failed to bind gateway socket on ws://127.0.0.1:<port>: …").
Операционные замечания
- Если порт занят другим процессом, ошибка будет той же; освободите порт или выберите другой с помощью
openclaw gateway --port <port>. - Приложение для macOS по-прежнему поддерживает собственную лёгкую защиту на основе PID перед запуском шлюза; блокировка времени выполнения обеспечивается привязкой WebSocket.