【发布时间】:2020-10-21 12:32:22
【问题描述】:
我在同一个网络中有 3 台服务器。在这些服务器中的每一个上,一个 redis 服务和某种生产者都在运行。生产者将作业排入名为tasks 的本地rq 队列。
所以每个服务器都有自己的tasks 队列。
另外,还有一台服务器正在运行 rq worker。是否可以让该工作人员检查 3 台服务器中的每台服务器上的 tasks 队列?
我已尝试创建连接列表
import redis
from rq import Queue, Worker
from rq import push_connection
# urls = [url1, url2, url3]
connections = list(map(redis.from_url, urls))
然后我用它来创建队列列表。
queues = list(map(lambda c: Queue('tasks', connection=c), connections))
然后我推送所有连接
for connection in connections:
push_connection(connection)
并将队列传递给Worker
Worker(queues=queues).work()
这导致工作人员仅在最后推送的任何连接上侦听 tasks。
我一直在研究rq 上的代码,我想我可以编写一个自定义工作类来执行此操作,但在此之前我想问一下是否有其他方法。甚至可能完全是另一个队列框架?
【问题讨论】:
标签: python redis distributed-computing