使用 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(因为它需要更多时间),并且可能还为这些队列设置单独的工作线程数。我认为这可能是一个相当常见的用例,这两种方法间的推荐方式以及它们的优缺点。

解决方法

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

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

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