每位用户的Celery PeriodicTask

时间:2016-05-25 13:34:56

标签: python django celery

我正在开发项目,主要的未来将定期为每个用户运行一种异步任务。每个用户都可以配置任务(在指定时间每天,每周等运行)。任务也将使用用户存储的一些数据。现在我想知道哪种方法应该更好:允许用户创建自己的PeriodicTask(当然使用一些受限制的端点)或创建单个PeriodicTask(例如每5分钟运行一次),这将迭代所有用户并确定任务是否应该是是否为当前用户排队?我想我会用AMPQ作为经纪人。

1 个答案:

答案 0 :(得分:1)

celery中的定期任务调度程序不是为处理数千个计划任务而设计的,因此从性能角度来看,更好的解决方案是让一个任务以最小的间隔运行(例如,如果您允许用户每天,每周安排一次,每月 - 每天运行任务就足够了)

这种方法也更加稳定 - 每次计划更改时,都会重新加载所有计划记录

plus更安全,因为您不公开或使用任何内部机制来执行任务