使用 RQ 队列排队两步过程

时间:2021-03-11 07:43:05

标签: python asynchronous redis python-rq

我有以下要并行化或运行的函数 --

def func():
    a = f1()
    b = f2(a)

假设 f1 需要 t1 秒,f2 需要 t2 秒(比如 t2>t1)。我想用python rq和redis搭建一个任务队列来运行这个函数。

我的一个选择是将整个函数放在一个队列中,然后生成多个工作人员来处理该队列。另一个想法可能是为 f1f2 设置两个单独的队列,如下所示

q1,q2 = Queue('f1'), Queue('f2')
def wrapper_f1():
   a = f1()
   q2.enqueue(func=f2,args=[a]) 

def wrapper_f():
   q1.enqueue(func=wrapper_f1)

使用此设置,我可以将 f2 的优先级高于 f1(因为它需要更多时间),并且可能还为这些队列设置单独的工作线程数。我认为这可能是一个相当常见的用例,这两种方法之间的推荐方式以及它们的优缺点。

0 个答案:

没有答案
相关问题