У нас есть веб-приложение, сделанное с пирамидой и поданное через gunicorn + nginx. Он работает с 8 рабочими потоками/процессами
Нам нужно было работать, мы выбрали apscheduler. вот как мы его запускаем
from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR
from apscheduler.scheduler import Scheduler
rerun_monitor = Scheduler()
rerun_monitor.start()
rerun_monitor.add_interval_job(job_to_be_run,\
seconds=JOB_INTERVAL)
Проблема заключается в том, что все рабочие процессы стрельбы выбирают планировщика. Мы попытались реализовать блокировку файлов, но это не похоже на достаточно хорошее решение. Каким будет лучший способ убедиться, что в любой момент времени только один из рабочих процессов выбирает запланированное событие вверх, и ни один другой поток не поднимает его до следующего JOB_INTERVAL
?
Решение должно работать даже с mod_wsgi, если мы решили перейти на apache2 + modwsgi позже. Он должен работать с сервером разработки одного процесса, который является официанткой.
Обновление от спонсора bounty
Я столкнулся с той же проблемой, описанной OP, только с приложением Django. Я в основном уверен, что добавление этой детали не сильно изменится, если исходный вопрос. По этой причине и для получения большей видимости я также отметил этот вопрос с помощью django
.