Работа по управлению расширениями Django

Я пытаюсь реализовать задание управления расширением django. Я хотел бы знать, как я могу запустить задание внутри django, чтобы запускать код ежедневно и указать точное время, например, 4:00 утра в задании управления расширением django. пока что код приведен ниже:

from django_extensions.management.jobs import DailyJob

class Job(DailyJob):
    help = "Send notification On Instruction Instances"

      
    def execute(self):
        print("job executed at 4:00 Am")

Большое спасибо

Django не обрабатывает тайминг, это делает кронтаб.

Пока вы согласны с тем, чтобы все ежедневные задания выполнялись в 4 утра, вы можете просто обновить свой кронтаб, чтобы использовать это. В docs показано:

@daily /path/to/my/project/manage.py runjobs daily

И эти документы показывают, что @daily эквивалентен 0 0 * * *.

Так что просто измените свой crontab на:

0 4 * * * /path/to/my/project/manage.py runjobs daily

В их исходном коде также показано, что существует команда runjob, которая может принимать имя задания. Таким образом, чтобы запустить только эту работу в 4 утра, вы бы использовали:

0 4 * * * /path/to/my/project/manage.py runjob my_job

Однако, эта работа должна не быть DailyJob, так как она будет выполняться дважды (один раз ежедневно от runjobs daily, один раз в 4 утра от runjob myjob). Я думаю, чтобы сделать это, вы просто наследуете от BaseJob вместо:

class Job(BaseJob):
    help = "Send notification On Instruction Instances"

Но я не уверен на 100%, где это должно быть в вашем коде. Возможно, я бы начал с попытки добавить его непосредственно в каталог jobs/.

Первый ответ правильный, но чтобы добавить еще несколько вариантов для вас, есть пакеты django, которые обрабатывают фоновые задачи и планирование довольно хорошо, начиная от простых вещей, которые просто запускают задачу, когда вы хотите, до сложных решений, таких как celery.

Загляните на https://djangopackages.org/grids/g/workers-queues-tasks/ для получения полного списка пакетов, которые могут вам пригодиться.

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