2024-04-24 11:09:01 发布
网友
想象一下,有一个长时间运行的任务具有一组特定的arg和kwarg。在开始一个新任务之前,是否有机会撤消所有正在运行和挂起的具有相同args/kwargs的任务,因为Im只对最后添加的任务的结果感兴趣。(两个调用之间的基础数据更改)
我尝试迭代inspect.active()、inspect.registered()和{}的结果来获得所有任务,然后{}那些有我的参数和kwarg的任务。在
inspect.active()
inspect.registered()
但这并不可靠,因为检查所有工人和寻找任务的时间太长。在
谁能帮我找到正确的方向?在
如果检查工作线程的速度很慢,那么最好通过辅助数据存储进行检查,例如像redis这样的键值存储。你为一个函数添加了一个“锁”,所以你知道你已经启动了它。在
将任务排队时:
一个工人会执行它
有一个基于redis的现成实现:
^{}(permalink to current commit)。在
必须将其指定为任务的base
base
from celery import Celery from celery_once import QueueOnce @celery.task(base=QueueOnce) def sum(a, b): ...
您还可以指定要考虑的参数和其他一些设置,请阅读自述文件以了解更多详细信息。在
如果检查工作线程的速度很慢,那么最好通过辅助数据存储进行检查,例如像redis这样的键值存储。你为一个函数添加了一个“锁”,所以你知道你已经启动了它。在
将任务排队时:
一个工人会执行它
有一个基于redis的现成实现:
^{} (permalink to current commit)。在
必须将其指定为任务的
base
您还可以指定要考虑的参数和其他一些设置,请阅读自述文件以了解更多详细信息。在
相关问题 更多 >
编程相关推荐