Конфигурация и операции

Блокировка шлюза

Последнее обновление: 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.

ЛогированиеФоновое выполнение и инструмент процессов