ответ от GrahamDumpleton @ Github: (https://github.com/GrahamDumpleton/mod_wsgi/issues/383)
То, что вы видите, в точности соответствует ожиданиям. Apache не передает изящные сигналы перезапуска в управляемые подпроцессы, он только передает их в свои дочерние рабочие процессыДля управляемых процессов будет отправлено SIGTERM
, и он будет зверски убивать их через 3 или 5 секунд (точно не помню, сколько времени), если они не выключены. Обойти это невозможно. Это ограничениеApache.
Таким образом, тайм-аут выселения применяется только в том случае, если документы говорят, когда «процессу демона» отправляется изящный сигнал перезапуска напрямую, то есть перезапуск Apache в целом изящно ничего не делает, но отправляетсигнал постепенного перезапуска на pid самих процессов-демонов.
Таким образом, единственное решение, если это поведение важно, - убедиться, что вы используете опцию display-name
для директивы WSGIDaemonProcess
, чтобы процессы-демоны назывались уникально по сравнению сApache обрабатывает, а затем посылает сигналы на них только напрямую.
Обычно это oЭто становится проблемой, потому что некоторые системы Linux полностью игнорируют тот факт, что Apache имеет очень хорошую систему ротации файлов журналов, и вместо этого выполняют внешнюю ротацию файлов журналов, переименовывая файлы журналов один раз в день, а затем пытаются выполнить постепенный перезапуск.Люди увидят проблемы с прерванными запросами, которых они не ожидают.В этом случае вам следует использовать собственный механизм ротации файлов журнала Apache, если это важно, и не полагаться на внешние системы ротации файлов журнала.