gpt4 book ai didi

python - 如果参数和任务名称已经在服务器中排队,是否可以跳过委派 celery 任务?

转载 作者:太空狗 更新时间:2023-10-29 18:33:53 24 4
gpt4 key购买 nike

假设我有这个任务:

def do_stuff_for_some_time(some_id):
e = Model.objects.get(id=some_id)
e.domanystuff()

我是这样使用它的:

do_stuff_for_some_time.apply_async(args=[some_id], queue='some_queue')

我面临的问题是,有很多具有相同 arg 参数的重复性任务,这让队列陷入困境。

只有当相同的参数和相同的任务不在队列中时才可以应用异步吗?

最佳答案

celery-singleton解决了这个需求

警告:需要 redis 代理(用于分布式锁)

pip install celery-singleton

使用Singleton任务基类:

from celery_singleton import Singleton

@celery_app.task(base=Singleton)
def do_stuff_for_some_time(some_id):
e = Model.objects.get(id=some_id)
e.domanystuff()


来自文档:

calls to do_stuff.delay() will either queue a new task or return an AsyncResult for the currently queued/running instance of the task

关于python - 如果参数和任务名称已经在服务器中排队,是否可以跳过委派 celery 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45107418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com