djcelery PeriodicTasks.changed方法 - 更新查询运行缓慢

时间:2017-04-03 10:18:30

标签: python django django-celery celerybeat celeryd

我一直在使用芹菜(3.1),django-celery(3.1.17)(即djcelery)与Django(1.9)进行调度任务。最近我注意到PeriodicTasks表的一次更新查询需要花费大量时间(大约1分钟),因此调度任务的整个过程运行缓慢。模型PeriodicTasks的更新查询由PeriodicTask model上的pre_savepre_delete个字母调用。因此,每当在PeriodicTask表中添加新对象时,信号触发器和调用PeriodicTasks.changed method就会一次又一次地更新相同的PeriodicTasks对象的值。

我假设更新查询工作缓慢,因为数百万个任务在很短的时间内发布,并且每个任务相同的PeriodicTasks对象都会更新。

问题是(如果我不想升级到celery 4.x),此更新(PeriodicTasks对象)的目的是什么?如果我删除signal call,它会以任何方式影响django-celery的功能吗?

另外,对于celery4,pre_savepre_delete djcelery/models.py的同一信号呼叫也会发生。所以即使我升级到芹菜4也无济于事。

更新

我通过评论PeriodicTasks中的两个信号调用来实验,一切运行良好。现在的问题是这次更新通话的目的是什么?为什么要调用信号来更新com.example.neo.smsapp.IFTT.CancelAnAlarmActivity的相同实例。

0 个答案:

没有答案