如何正确管理芹菜预定任务

问题描述

我在Celery中设置了一个任务(功能),并计划在不同时间运行多组参数。对于每个任务,我使用apply_async来安排它们以及手动分配的task_id

在某些情况下,我可能不得不重新安排一些任务,但是上一次我检查不了。

实现此目的的另一种方法是撤销旧任务,然后重新安排它们。但是由于我为每个任务分配了一个自定义task_id,由于how celery revoke works的逻辑,计划中的新任务将立即被丢弃(如下所述)。

celery_1    | [2020-08-29 20:25:37,320: INFO/MainProcess] Tasks flagged as revoked: renew_UCE_M8A5yxnLfW0KghEeajjw
celery_1    | [2020-08-29 20:25:47,903: INFO/MainProcess] Received task: tubee.tasks.renew_channels[renew_UCE_M8A5yxnLfW0KghEeajjw]  ETA:[2020-09-02 20:15:20+00:00]
celery_1    | [2020-08-29 20:25:47,903: INFO/MainProcess] discarding revoked task: tubee.tasks.renew_channels[renew_UCE_M8A5yxnLfW0KghEeajjw]

我目前的解决方法是在每个task_id之后添加一个随机uuid。不够完美,但仍然可以。

所以我的问题是,是否有更好的方法来管理单个任务?

我知道有一个purge选项可以将队列清除为干净状态,并从screatch开始转移。但是,当您仅从数十个甚至数千个数千个任务重新安排单个任务时,我认为这不是一个好主意。

总而言之,我认为这是管理个人任务的更好方法,或者我的误解告诉我,芹菜能够实现原本不适合的目标。

欢迎并提出想法和建议。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)