Я создаю приложение Django, которое рассчитано на многопоточность, но находится в одном процессе, работающем под mod_wsgi. В начале дня мне нужно выполнить различные, возможно, длительные задачи инициализации, такие как загрузка кэша данных из базы данных в краткий справочник. Мне нужно, чтобы инициализация запускалась ровно один раз перед обработкой любых запросов, а затем запускать фоновый поток для периодического обновления загруженных данных.
Я пытался поместить код инициализации в модуль, но я обнаружил, что иногда (если я загружаю сервер на момент запуска), код инициализации выполняется несколько раз, что приводит к поломке.
Есть ли хорошее место для подключения к Django или WSGI для запуска такого кода инициализации ровно один раз, прежде чем будут разрешены какие-либо запросы? В качестве альтернативы, кто-нибудь знает, в каких ситуациях код инициализации модуля выполняется более одного раза (особенно в djangp / WSGI-land) или как можно где-нибудь спрятать флаг «я уже инициализирован»?