Celery/Redis 每个任务触发两次 send_email 任务

问题描述 投票:0回答:1

我有一个 Celery 任务来发送一封电子邮件,但从前一段时间开始,这封电子邮件以相同的主题和正文到达了 2 次。我认为值得一提的是,为了发送电子邮件,我使用 SendGrid。附件是用于运行任务的代码片段

app.config_from_object('django.conf:settings', namespace='CELERY')
app.conf.broker_transport_options = {'visibility_timeout': 43200}

"send_sales_ga_rental":{
    "task": "core.tasks.send_sales_ga_rental",
    'schedule': crontab(0, hour=12, day_of_week='1')        
}

app.autodiscover_tasks()

@app.task(bind=True)
def debug_task(self):
    print(f'Request: {self.request!r}')

最后,我认为重要的是要提到该应用程序在 Heroku 服务器上运行。

[![在此处输入图像描述][1]][1] [1]:https://i.sstatic.net/K6cAoCGy.png

python django redis celery celery-task
1个回答
0
投票

当visibility_timeout设置为43200(12小时)时,由于创建了重复的任务,该任务可能会被执行两次。您可以尝试将visibility_timeout降低到较低的值(例如,3600为1小时),看看问题是否仍然存在。 通过在 Django 设置中设置 CELERYD_LOG_FORMAT 和 CELERYD_LOG_FILE 来启用 Celery 的内置日志记录。

@app.task(bind=True)

def debug_task(self):

print(f'Request: {self.request!r}')

logger.info(f'T
© www.soinside.com 2019 - 2024. All rights reserved.