因此,我正在努力找出使用芹菜安排某些事件在未来某个时间点发生的最佳方式。一个例子是当新用户注册时,我们希望第二天向他们发送电子邮件。
我们有celery设置,有些人在调用eta
时可能会提到apply_async
参数。然而,这对我们不起作用,因为我们使用SQS,其可见性超时会发生冲突,并且eta
参数通常不应该长时间使用。
我们此时实现的一个解决方案是创建事件并将其存储在数据库中,并带有“to-process”时间戳(指的是何时处理事件)。我们使用celery beat调度程序,每秒执行一次任务,以查看是否有任何可以处理的新事件。如果有,我们执行后续任务。
这个解决方案很有效,但由于我们在SQS上每秒排队一次任务,所以感觉不太好。对此有任何想法或想法会很棒吗?