如何解决如何正确管理芹菜预定任务
我在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 举报,一经查实,本站将立刻删除。