Я считаю, что архитектура RQ Scheduler в корне ошибочна и намного сложнее, чем должна быть.
Расписания хранятся в RedisДаже если вы удалите или измените свой код планирования, старые расписания останутся в Redis до тех пор, пока не будут явно отменены.
Недекларативная модель
Простое удаление строки Scheduler.cron(...) не удаляет расписание; вам необходимо вручную запустить Scheduler.cancel(job_id).
Код: Выделить всё
rqschedulerКоманда rqscheduler только опрашивает Redis на наличие срочных заданий. Он не импортирует и не выполняет ваш код Python для динамического обновления расписаний.
Нет встроенной сверки
Вы должны управлять жизненным циклом запланированных заданий — их добавление, обновление или удаление — самостоятельно, часто требуя дополнительных сценариев или ручных процессов.
Я настоятельно предпочитаю подход Celery Beat к отправке/постановке задач в очередь из моего Python код, именно тогда, когда они запланированы run.
Однако в этом конкретном проекте я использую RQ, поэтому Celery Beat мне недоступен.Как мне создать что-то простое, которое принимает строки cron и работает аналогично Celery Beat?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ng-asyncio
Мобильная версия