Форум сайта python.su
Доброе время суток!
Для разработки веб-приложений использую apache+mod_python и его publisher handler (процесс разработки упрощается и нет проблем со статическим контентом). Для подключения к БД использую пул SQLAlchemy. Все работает, все прекрасно.
Когда возникла необходимость держать пул POP3-подключений, пришлось немного поимпровизировать:
1) в модуле index.py, содержащем все обработчики, объявлен словарь:
pop3_pool = {}
2) при обработке запроса проверяется, содержит ли “пул” подключение для текущей сессии:
if session.id() in pop3_pool:
3) если подключение не установлено, происходит редирект на страницу логина, в противном случае запрос обрабатывается (отображается список писем, отображается выбранное письмо и т.д.)
Однако, через некоторое время заметил фичу: если не отправлять запросы серверу некоторое время, словарь pop3_pool опустошается. Проверка подтвердила, что при отсутствии запросов модуль выгружается из памяти, и его глобальные переменные, соответственно, инициализируются заново. При использовании пула подключений к БД я этого не замечал, поскольку переподключение при вызове create_engine происходило автоматически. В данном случае такое поведение неприемлемо, т.к. при переподключении индекс письма может измениться (например, при удалении письма с другого подключения) и операция будет произведена не над тем письмом, которое было выбрано для обработки.
Как можете посоветовать решить такую проблему? WSGI, FastCGI (не сталкивался ранее ни с тем, ни с другим)? Опции Python* в .htaccess'е?
Заранее спасибо!
Офлайн