问题描述
def func():
a = f1()
b = f2(a)
假设 f1 需要 t1 秒,f2 需要 t2 秒(比如 t2>t1)。我想用python rq和redis搭建一个任务队列来运行这个函数。
我的一个选择是将整个函数放在一个队列中,然后生成多个工作人员来处理该队列。另一个想法可能是为 f1
和 f2
设置两个单独的队列,如下所示
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 (将#修改为@)