我是celery
的新手。我在celeryconfig.py
中有一些配置如下:
from datetime import timedelta
BROKER_URL='redis://localhost:6379/0'
CELERY_RESULT_BACKEND="redis"
CELERY_REDIS_HOST="localhost"
CELERY_REDIS_PORT=6379
CELERY_REDIS_DB=0
CELERY_IMPORT=("mail")
CELERYBEAT_SCHEDULE={'runs-every-30-seconds' :
{
'task': 'mail.mail',
'schedule': timedelta(seconds=30),
},
}
我已安排该作业将在30秒内定期运行。现在我希望工作应该从29 aug
4:00PM
开始,然后我应该如何配置?
答案 0 :(得分:1)
您应该使用Cron而不是timedelta。 Celery文档专门讨论了这个问题,并提供了一些有用的示例。见Crontab schedules
以下是Celery的一个例子:
from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
# Executes every Monday morning at 7:30 A.M
'every-monday-morning': {
'task': 'tasks.add',
'schedule': crontab(hour=7, minute=30, day_of_week=1),
'args': (16, 16),
},
}
要使这项工作符合您的条件,您还需要指定cron month_of_year
参数。