Грациозное завершение процесса сервера

Эта страница представляет, как грациозно завершить работающий процесс сервера с помощью сигналов.

Когда вы запускаете обработку сервера с помощью Server.Run(Handler), он будет блокироваться и ожидать поступления сигналов.

Есть два типа сигналов, которые могут быть отправлены работающей программе для грациозного завершения процесса.

  • TSTP: Этот сигнал сообщает Server остановить обработку новых задач.
  • TERM или INT: Этот сигнал сообщает Server о прекращении работы (т.е. завершении).

Рекомендуется сначала отправить сигнал TSTP, чтобы прекратить обработку новых задач, и дождаться завершения всех выполняемых задач перед отправкой сигнала TERM для завершения программы.

Используйте команду kill для отправки сигналов.

kill -TSTP  # Прекратить обработку новых задач

kill -TERM  # Выключить сервер

Примечание: Если сигнал TERM или INT будет отправлен без отправки сигнала TSTP, Server запустит таймер и будет ждать 8 секунд, чтобы все задания завершились (для настройки этой продолжительности времени ожидания используйте конфигурацию ShutdownTime). Если есть незавершенные задачи в течение этого времени, задания вернутся в состояние ожидания и будут обработаны снова при перезапуске программы.

Примечание: В настоящее время Windows не поддерживает сигнал TSTP.