Как я могу настроить Apache2 / mod_python / Django для прерывания обработки запроса через N секунд? - PullRequest
2 голосов
/ 07 января 2010

Недавно я потратил много времени на отладку чего-то, что оказалось ошибкой бесконечного цикла в моем собственном коде. Поскольку я не могу гарантировать, что никогда больше не сделаю такую ​​ошибку, как я могу настроить свой веб-сервер так, чтобы он завершал любой подпроцесс apache2, который все еще ожидает, пока мое приложение python вернет ответ более N секунд?

В этом случае я даже не заметил ошибку, пока сайт не стал работать медленно, и в этот момент один процесс apache2 работал в бесконечном цикле в течение нескольких часов. Если бы был тайм-аут (даже длительный, например, 10 минут), который мог бы поймать это и послать мне по электронной почте, я бы знал о проблеме раньше, и это не повлияло бы на производительность сайта для такого количества пользователей.

Гугл, я нашел несколько советов о подобных вещах в конфигурации mod_wsgi, но если есть способ сделать это в моих текущих настройках, я бы предпочел это. Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 января 2010

Короткий ответ - нет, в mod_python нет встроенной возможности превышать время ожидания для отдельных запросов.

0 голосов
/ 07 января 2010

Хммм.

Интересно, можете ли вы использовать mod_cgi для запуска вашего скрипта Python для разработки. А затем вернитесь к mod_python для развертывания.

Затем вы можете использовать основную директиву Apache TimeOut, чтобы ограничить время ожидания Apache ответа mod_cgi. Нотабене Apache 2.2, то есть, это расширение директивы TimeOut появилось только в версии 2.2.

НТН

...