Как наилучшим образом можно выполнить длительные периодические задачи?

Как правильно создать задачу на бэкенде, которая будет вызываться раз в 2-3 секунды и будет длиться долгое время (недели-месяцы), учитывая отсутствие встроенного interval планировщика у celery и необходимость динамического создания задач в рантайме? Я рассматриваю варианты создания одной задачи и циклического запуска ее, но мне кажется, что удерживать такую задачу активной на протяжении длительного времени и логировать ее выполнение будет проблематично. Возможно, есть другие варианты, например, создание отдельного планировщика для запуска celery задач?
  • 26 декабря 2023 г. 22:07
Ответы на вопрос 2
Если вам необходимо выполнить длительные периодические задачи в фоновом режиме, у вас есть несколько вариантов решения этой задачи:

1. Использование планировщика задач. Планировщики задач, такие как cron в UNIX-подобных системах или Task Scheduler в Windows, могут быть настроены для запуска вашей задачи в определенное время или с определенной периодичностью. Вы можете создать скрипт или команду, которая будет вызывать вашу задачу раз в 2-3 секунды, и настроить планировщик задач для запуска этой команды.

2. Использование Celery с динамическим созданием задач. Если вы хотите использовать Celery, вы можете использовать библиотеку beat для планирования задач. Beat может создавать задачи на основе конфигурационного файла или базы данных, что позволяет динамически создавать задачи во время выполнения. Вы можете создать одну задачу, которая будет запускаться раз в 2-3 секунды, и использовать beat для управления ее выполнением.

3. Использование отдельного планировщика для запуска Celery задач. Вы можете использовать отдельный планировщик задач, такой как cron или Task Scheduler, чтобы запускать скрипт, который будет запускать вашу Celery задачу. В этом случае вы будете создавать только одну задачу в Celery, но будете использовать внешний планировщик для контроля времени ее выполнения.

Вам следует выбрать подход, который лучше всего подходит для вашей конкретной ситуации и требований.
Так как у celery не встроенного interval планировщика который бы мог динамически в рантайме создавать таски

А это что?
Похожие вопросы