我已经在我的django应用程序中配置芹菜,以便每天早上运行任务。该任务只是向一组用户发送电子邮件。问题是同一封电子邮件被发送了几百次!!
这是我的芹菜配置:
BROKER_URL = 'redis://127.0.0.1:6379/0'
BROKER_TRANSPORT = 'redis'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
'alert_user_is_not_buying-everyday-at-7': {
'task': 'opti.tasks.alert_users_not_buying',
'schedule': crontab(hour=7, minute=0),
},
}
任务是:
@app.task(bind=True)
def alert_user_is_not_buying(self):
send_mail_to_users()
我使用这些命令来启动工作并击败(我使用主管):
exec celery --app=opti beat --loglevel=INFO
exec celery --app=opti worker --loglevel=INFO
我相信我的send_mail_to_users()方法没问题,看起来电子邮件每30秒发送一次......
缺少什么?
答案 0 :(得分:1)
您的CELERYBEAT_SCHEDULE设置可能未使用,因为您已将CELERYBEAT_SCHEDULER设置为使用DatabaseScheduler。该调度程序是如何配置的?我想是问题的来源。