Django периодически запускает функцию в фоновом режиме
У меня есть функция, которая получает данные и должна выполняться периодически.
Все, о чем я забочусь, это запускать ее каждые 30 секунд.
Я искал и нашел следующие варианты -
- celery
- django-apscheduler
- 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.