使用 Django 和 celery 在特定时间安排电子邮件
Posted
技术标签:
【中文标题】使用 Django 和 celery 在特定时间安排电子邮件【英文标题】:Schedule emails on a specific time using Django and celery 【发布时间】:2022-01-06 06:40:36 【问题描述】:这是我正在寻找的用例:
用户将在我的应用程序上注册 这是一个笔记制作和剩余应用程序 在创建剩余用户时,将输入我的应用程序希望当时向用户发送电子邮件的时间 我必须用芹菜做同样的事 我阅读了几篇帖子和堆栈溢出答案,但没有得到相同的正确答案。我的应用程序是用 Django 编写的。
【问题讨论】:
【参考方案1】:当用户创建新提醒时,只需在 celery 中安排发送电子邮件任务。请注意,这是一个简单的解决方案,但它会使用户难以在创建通知时间后更改通知时间。
来自answer:
要在指定的日期和时间执行任务,您可以在调用任务时使用 apply_async 的 eta 属性,如 docs 中所述
your_task.apply_async(kwargs=, eta="your_send_time")
另一种解决方案是每 1 分钟运行一次任务,如果有任何电子邮件要发送,它将检查数据库。你不必为此使用芹菜。类似 Cron 的库应该可以解决问题。例如schedule lib 或django-cron 或Django Commands
编辑:this guy 说你不应该在 Django 中使用 dbader/schedule。
【讨论】:
谢谢你的工作以上是关于使用 Django 和 celery 在特定时间安排电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
Django-celery 和 RabbitMQ 不执行任务
Django celery crontab 每 30 秒 - 有可能吗?