DjangoJobStore случайно удаляет задания
У меня работает apscheduler с DjangoJobStore из команды управления в django, но время от времени некоторые (не все) задания удаляются из базы данных.
Планировщик все еще работает, все еще получает другие задания, но не находит конкретное задание в коде ниже. Когда я проверяю администратора, он удален.
Перезапуск команды исправляет ситуацию, поскольку она добавляет задание обратно на случайный промежуток времени перед повторным удалением.
Я добавил слушателя для EVENT_JOB_REMOVED, но он никогда не срабатывает, и я добавил точки останова во всех методах удаления для DjangoJob, и ни один из них никогда не срабатывает.
функция must_reply просто проверяет почтовый ящик и отправляет ответ по smtp, ничто в ней не обращается к таблице DjangoJob, как и в остальном коде.
must_reply украшен @close_old_connections
Удаление DjangoJobStore в качестве хранилища заданий решает проблему, но, очевидно, я хотел бы использовать его haha
Кто-нибудь сталкивался с этим? И какие есть решения или идеи, чтобы попытаться исправить это.
Это действительно странно.
class Command(BaseCommand):
help = "Runs APScheduler."
def handle(self, *args, **options):
executors = {
'default': ThreadPoolExecutor(max_workers=10)
}
job_defaults = {
'coalesce': True,
'misfire_grace_time': 10
}
scheduler = BlockingScheduler(timezone=settings.TIME_ZONE, executors=executors, job_defaults=job_defaults)
scheduler.add_jobstore(DjangoJobStore(), "default")
scheduler.add_job(
must_reply,
IntervalTrigger(
seconds=10
),
id="must_reply",
max_instances=1,
replace_existing=True,
)
try:
scheduler.start()
except:
scheduler.shutdown()