从现在开始安排一个月或一年的活动的最佳方法是什么? 例如,我希望我的程序在客户注册一年后发送通知。
我尝试使用eta选项将芹菜与redis一起使用,但是在某些时候,任务会成倍增加并将相同的通知发送给同一位客户(例如600次)。我也认为使用cronjob并不是最佳选择。
有什么建议吗?
答案 0 :(得分:4)
您不想在队列中放入您不想读一年的东西。
将注册日期存储在数据库中。编写一个程序,该程序读取数据库并将信息推送到主题。您可以每天运行此程序,它将找到所有应通知的人。
答案 1 :(得分:1)
正如JR ibkr所指出的那样,将任务安排到现在的1年后可能不是一个好主意,但是每天运行一次任务以扫描要通知的人。
但是无论如何,您看到的内容可能与celery + redis配置的错误有关,在此处进行了讨论:https://github.com/celery/celery/issues/4400。
您可以尝试使用RabbitMQ作为消息代理来避免此问题,或者尝试使用该讨论中的建议之一。
希望您不需要等待一年即可查看它是否有效:)