我在Django模型中有活动列表。我需要每15分钟向用户发送一次电子邮件,直到活动完成(如果活动状态为“高”)。
我遵循的步骤:
1。创建芹菜任务
2。使用apply_async(eta ='time object')触发了此任务
3。我在CELERYBEAT_SCHEDULE中注册了此任务
#1.celery task
@shared_task
def periodic_send_email(self, *args, **kwargs):
#Logic for sending email
#2.task triggering
periodic_send_email.apply_async(eta= "I used time object", retry= True)
#3.registering the task in settings:
CELERYBEAT_SCHEDULE = {
'periodic_send_email': {
'task': 'cloud_app.tasks.periodic_send_email',
'schedule': crontab(),
},
}
答案 0 :(得分:0)
用于启动调度程序; http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#starting-the-scheduler
Crontab调度程序; http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#crontab-schedules
您不需要任务触发器。您应该将crontab设置为crontab(minute="*/15")
from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
'periodic_send_email': {
'task': 'cloud_app.tasks.periodic_send_email',
'schedule': crontab(minute="*/15"),
},
}
而且,您必须使用-B
参数开始芹菜。
首先,使用命令启动celery worker;
celery -A proj worker -B
之后,开始芹菜拍;
celery -A proj beat
答案 1 :(得分:0)
我有一个。
我们可以使用数据库支持的定期任务。
包裹:django-celery-beat
https://django-celery-beat.readthedocs.io/en/latest/
在管理面板中,我们可以创建具有特定间隔的定期任务,并且可以存储args,kwargs。