我正在尝试设置一个链接工作池系统,如下所示:
╭────────╮ ╭─────────╮ ╭─────────╮
│ ├──> Worker 1 ───> │ ├──> Worker 3 ───> │ │
│ Data ├──> Worker 1 ───> │ Queue ├──> Worker 3 ───> │ Queue ├───> Output
│ ├──> Worker 1 ───> │ ├──> Worker 3 ───> │ │
╰────────╯ ╰─────────╯ ╰─────────╯
╭────────╮ ^ ^ ^
│ ├──> Worker 2 ────────┘ │ │
│ Data ├──> Worker 2 ──────────┘ │
│ ├──> Worker 2 ────────────┘
╰────────╯
在推出自己的通用解决方案之前,我可以使用任何现有的库(或干净的multiprocessing
/ threading
示例)吗?我不确定将这种设置称为什么,所以我的谷歌搜索没有给我很多有用的结果。
任何提示都表示赞赏!
答案 0 :(得分:1)
ZeroMQ是一种轻量级解决方案,具有Python绑定功能。 http://www.zeromq.org/bindings:python
答案 1 :(得分:1)
我看过Beanstalkd之前很高兴处理工作队列,多处理器是生产者和/或消费者,节省了担心线程。
上有一个Python客户端从他们的wiki中获取的示例。
>>> import beanstalkc
>>> beanstalk = beanstalkc.Connection(host='localhost', port=14711)
>>> beanstalk.put('hey!')
1
>>> job = beanstalk.reserve()
>>> job.body
'hey!'
>>> job.delete()
这可能满足您的需求 - IIRC您也可以拥有持久的队列。