Django периодически запускает функцию в фоновом режиме

У меня есть функция, которая получает данные и должна выполняться периодически.
Все, о чем я забочусь, это запускать ее каждые 30 секунд.

Я искал и нашел следующие варианты -

  1. celery
  2. django-apscheduler
  3. Apscheduler

Я пробовал Apscheduler, используя BackgroundScheduler, и у него есть эта проблема, что он запускает новый планировщик для каждого процесса.
Я совершенно новичок в функциях планирования и понятия не имею, какую из них мне следует использовать или есть ли лучший способ.

Я столкнулся с подобной проблемой и решил ее, создав пользовательскую команду управления и запланировав ее на веб-сервере.

В корне приложения создайте каталог management/commands:

some_app/
__init__.py
models.py
management/
    commands/
        dosomething.py
tests.py
views.py

// dosomething.py

from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):
    help = 'Description of the action here'

   def handle(self):
        print('Doing something')
        return

Чтобы убедиться, что он работает, выполните python manage.py dosomething

Само планирование зависит от того, какой веб-сервер вы используете. В моем случае это был Heroku, и я использовал их дополнение Scheduler add-on.

Вернуться на верх