Как я могу запустить задачу сельдерея только один раз в django? - PullRequest
0 голосов
/ 12 апреля 2020
from __future__ import absolute_import, unicode_literals

from celery import shared_task
from celery.task import periodic_task
from celery.schedules import crontab
from datetime import timedelta



@periodic_task(run_every=(crontab(minute='*/1')), name='greeting_task')
def greeting_task():
    print('hello Dias!')

Могу ли я создать функцию, которая запускается только один раз в определенное время с помощью crontab? ПОЖАЛУЙСТА ПОМОГИ!!! заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Если вы используете Django -Celery-Beat , у него есть возможность создавать задачи, которые запускаются только один раз в указанные c дату / время, используя ClockedSchedule модель. По какой-то причине его нет в документации, но вы можете легко настроить его через Django Admin.

0 голосов
/ 12 апреля 2020

Вам необходимо изменить параметры для crontab.

Пример. Если вы хотите, чтобы задача запускалась один раз в 5:00 каждый день:

@periodic_task(run_every=(crontab(minute='0', hour='5')), name='greeting_task')
def greeting_task():
    print('hello Dias!')

crontab(minute='*/1') запустит задание в каждую минуту. Читайте о синтаксисе crontab здесь: https://en.wikipedia.org/wiki/Cron

...