我有一个 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
当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