gpt4 book ai didi

python - 使用工作池使用 Redis 消息

转载 作者:可可西里 更新时间:2023-11-01 11:36:11 25 4
gpt4 key购买 nike

我有一个 Redis 列表,发布者在其中推送一些消息(JSON 序列化)。

另一方面,订阅者可以获取每个 JSON blob 并执行某些操作。最简单的方法是连续执行此操作。但是我想让它快一点;我想维护一个工作进程池(多个消费者),每当有新消息到达时检查池中是否有一个可以开始处理的“空闲”进程我正在寻找以下基于池的版本

while not False:
_, new_user = conn.blpop('queue:users')
if not new_user:
continue
try:
process_new_user(new_user, conn)
except Exception as e:
print e
else:
pass

但是我无法将其转换为使用 pythons multiprocessing.Pool 类的代码。文档也没有帮助

最佳答案

from multiprocessing import Pool


pool = Pool()

while 1:
_, new_user = conn.blpop('queue:users')

if not new_user:
continue

pool.apply_async(process_new_user, args=(new_user, conn))

如果你想处理异常,你需要收集 pool.apply_async 返回的 AsyncResult 对象并检查它们的状态。

如果你可以使用 Python 3,concurrent.futures池允许处理异步回调中的结果,从而更容易检查作业退出状态。

关于python - 使用工作池使用 Redis 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33397360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com