Ответ 1
Хорошо, я поеду. Предполагая, что вы установили apscheduler (или поместили его в свой путь Python). базовая документация для APS содержит следующий код для запуска задания:
from apscheduler.scheduler import Scheduler
sched = Scheduler()
@sched.interval_schedule(hours=3)
def some_job():
print "Decorated job"
sched.configure(options_from_ini_file)
sched.start()
Проблема, которую я подозреваю, заключается в том, как запустить запуск в Django. У вас есть несколько вариантов, в основном состоящих из "помещения его где-нибудь, когда он будет запущен". Например, добавьте его в конец файла models.py
или в urls.py
, и он будет обработан один раз при каждом перезапуске Django, а затем продолжит работу в фоновом режиме. Доступ к базе данных можно затем выполнить как обычно изнутри функции - просто импортируйте свои модели как обычно для своих запросов.
Однако учтите, что если вы сделаете это, вам понадобится убить и перезагрузить сервер в любое время, когда вы захотите изменить планирование. Я также не уверен, как это произойдет с несколькими потоками (у вас будет > 1 таймер?)
Вы действительно можете рассмотреть возможность перехода с помощью Celery (через django-celery), который дает вам все это, плюс отдельный демон scheduling с более точным контролем планирования.