Я пишу веб-сервер на Go, используя стандартную библиотеку net/http
, в которой используется активация сокета systemd.
У меня есть базовые принципы работы: сервер запускается при первом подключенииподключен к прослушивающему сокету, и я могу выполнить плавное отключение при получении сигнала (т. е. systemctl stop
будет работать без отключения активных запросов).
Я хотел бы, чтобы сервер автоматически завершал работу, когда он имеетпростоял в течение некоторого периода времени.Что-то вроде следующего:
- , когда последний активный запрос завершится, запустите таймер, скажем, на 30 секунд.
- если в течение этого периода поступит какой-либо новый запрос, остановите таймер.
- если таймер истекает, выполните постепенное отключение.
Идея состоит в том, чтобы освободить ресурсы, которые использовал сервер, зная, что systemd снова запустит нас, когда появится новый клиент.
Это части (1) и (2), в которых я не уверен.В идеале мне бы хотелось, чтобы решение не включало также изменение всех зарегистрированных обработчиков.