芹菜执行计划任务一百次
Celery executing scheduled task a hundred times
我在我的 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()
然后我使用此命令启动 worker 并击败(为此我使用 supervisor):
exec celery --app=opti beat --loglevel=INFO
exec celery --app=opti worker --loglevel=INFO
我相信我的 send_mail_to_users() 方法没有问题,看起来每 30 秒发送一次电子邮件....
缺少什么?
您的 CELERYBEAT_SCHEDULE 设置可能未被使用,因为您已将 CELERYBEAT_SCHEDULER 设置为使用 DatabaseScheduler。该调度程序是如何配置的?我想这就是问题所在。
我在我的 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()
然后我使用此命令启动 worker 并击败(为此我使用 supervisor):
exec celery --app=opti beat --loglevel=INFO
exec celery --app=opti worker --loglevel=INFO
我相信我的 send_mail_to_users() 方法没有问题,看起来每 30 秒发送一次电子邮件....
缺少什么?
您的 CELERYBEAT_SCHEDULE 设置可能未被使用,因为您已将 CELERYBEAT_SCHEDULER 设置为使用 DatabaseScheduler。该调度程序是如何配置的?我想这就是问题所在。