Я пытался создать задачу, которая должна запускаться каждую минуту в сельдерее вместе с сервером redis
Для выполнения redis я запустил "redis-server"
Для выполнения сельдерея я бегал "celery -A tasks worker --loglevel=info"
Это мой файл tasks.py
from celery import Celery
from celery.schedules import crontab
from celery.task import periodic_task
app = Celery('tasks', backend='redis://localhost', broker='redis://localhost')
@app.task
def add(x, y):
return x + y
@periodic_task(run_every=(crontab(minute='1')),name="run_every_minute",ignore_result=True)
def run_every_minute():
print("hehe")
return "ok"
Когда я бегал в консоли Python
from tasks.py import run_every_minute
z=run_every_minute.delay()
Я получил вывод на терминале с работающим сельдереем как
[2019-06-05 01:35:02,591: INFO/MainProcess] Received task: run_every_minute[06498b4b-1d13-45af-b91c-fb10476e0aa3]
[2019-06-05 01:35:02,595: WARNING/Worker-2] hehe
[2019-06-05 01:35:02,599: INFO/MainProcess] Task run_every_minute[06498b4b-1d13-45af-b91c-fb10476e0aa3] succeeded in
0.004713802001788281s: 'ok'
Но это должно выполняться каждую минуту, поскольку это периодическая задача. Как это может случиться
Кроме того, как мы можем выполнить задачу сельдерея в определенное время, скажем, 5:30 по Гринвичу (например).