Python 烧瓶+;第三方通知上的芹菜任务重复
我有一个flask应用程序,它在特定时间使用ETA/Countdown芹菜功能向用户发送电子邮件/短信,以Redis为代理,问题是电子邮件和短信任务随机重复-有时用户收到10封电子邮件/短信,有时用户收到20多封这些任务,任务只应运行一次。数据流:Python 烧瓶+;第三方通知上的芹菜任务重复,python,flask,redis,celery,Python,Flask,Redis,Celery,我有一个flask应用程序,它在特定时间使用ETA/Countdown芹菜功能向用户发送电子邮件/短信,以Redis为代理,问题是电子邮件和短信任务随机重复-有时用户收到10封电子邮件/短信,有时用户收到20多封这些任务,任务只应运行一次。数据流: 初始函数计划\事件\主调用带有通知的ETA任务 内部功能schedule\u ratings\u email&schedule\u ratings\u sms任务是.delay任务功能,它创建单个芹菜任务,以便向活动的各个来宾发送电子邮件和sms 这
CELERY_ACKS_LATE = True
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TIMEZONE = 'Africa/Johannesburg'
CELERY_ENABLE_UTC = True
@app.task(bind=True)
def schedule_ratings_email(self,event_id):
""" Fetch feed of URLs to crawl and queue up a task to grab and process
each url. """
try:
url = SITE_URL + 'user/dashboard'
guests = db.session.query(EventGuest).filter(EventGuest.event_id == int(event_id)).all()
event_details = db.session.query(Event).filter(Event.id == event_id).first()
if guests:
if event_details.status == "archived":
for guest in guests:
schedule_individual_ratings_emails.delay(guest.user.first_name, guest.event.host.first_name, guest.user.email,url)
except Exception as e:
log.error("Error processing ratings email for %s" % event_id, exc_info=e)
# self.retry()
@app.task()
def schedule_individual_ratings_emails(guest_name, host, guest, url):
try:
email_rating(guest_name, host, guest, url)
except Exception as e:
log.error("Error processing ratings email for %s", exc_info=e)
CELERY_ACKS_LATE = True
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TIMEZONE = 'Africa/Johannesburg'
CELERY_ENABLE_UTC = True