Изящное отключение сервера бутылочного питона - PullRequest
0 голосов
/ 22 февраля 2012

Привет, есть выход, чтобы изящно завершить работу сервера бутылок. В некотором смысле он должен быть в состоянии сделать несколько шагов, прежде чем он в конечном итоге останавливается. Это очень важно для некоторой очистки потоков, состояния БД и т. Д., Позволяющего избежать повреждения состояния при перезапуске.

Я использую модуль mod wsgi apache для запуска бутылочного сервера.

1 Ответ

1 голос
/ 22 февраля 2012

В mod_wsgi вы можете зарегистрировать обратные вызовы atexit, и они будут вызываться при нормальном завершении процесса. Вы не слишком долго, чтобы делать вещи, хотя. Если встроенный режим или режим демона и завершение работы вызваны перезапуском Apache, у вас есть только 3 секунды, поскольку после этого Apache принудительно завершит процессы. Если режим демона и триггер вызваны прикосновением к файлу сценария WSGI или вы явно отправили демону обработать сигнал, у вас есть 5 секунд, и именно тогда mod_wsgi решит, что это занимает слишком много времени, и принудительно уничтожит их.

См. Модуль 'atexit' в Python.

...