我正在尝试为托管在heroku上的带有芹菜的Django应用程序设置一些计划任务。除了不知道应该如何配置一切之外,解决这个问题的最佳方法是什么?
假设用户可以选择在他们选择的时间接收每日电子邮件。
我是否应该有一个每隔 5 分钟运行一次的预定作业。查找当时想要收到电子邮件的每个用户,然后关闭电子邮件?
或者
当每个用户设置他们的偏好时,为他们安排一个任务。(不确定我将如何实际实现这一点)
我正在尝试为托管在heroku上的带有芹菜的Django应用程序设置一些计划任务。除了不知道应该如何配置一切之外,解决这个问题的最佳方法是什么?
假设用户可以选择在他们选择的时间接收每日电子邮件。
我是否应该有一个每隔 5 分钟运行一次的预定作业。查找当时想要收到电子邮件的每个用户,然后关闭电子邮件?
或者
当每个用户设置他们的偏好时,为他们安排一个任务。(不确定我将如何实际实现这一点)
这取决于您需要多少准确度。您是否希望用户选择精确到分钟的时间?第二?或者允许他们选择他们希望通过电子邮件发送的时间就足够了。
如果整点时间足够准确,则使用一项任务,该任务每小时轮询用户发送邮件。
如果您的用户需要邮件准确到秒,则为每个用户设置一个任务,定时在该秒完成。
两者之间的一切都归结为个人选择。你更喜欢做什么,甚至更重要的是:什么产生最简单的代码和最少的故障模式?
我建议第一个选项(查找优秀工作的预定工作) - 更易于扩展和管理。如果您有 1000 多个用户怎么办 - 这就是发送电子邮件的大量任务。
如果您将数据库用作 celery 代理,则可以使用 django-celery 内置的类似 cron 的调度,这将允许您动态创建和销毁任务。不过,我不喜欢为我的经纪人使用数据库。
此外,您可能想查看chronos