rocketmq python 在子进程中连接失败 no route info of this topic - xd21303/Notebook GitHub Wiki

原因未知,可能是队列限制,队列数只有4。每新开一个子进程就占用一个队列?

解决方法:

在子进程中计算,将结果返回到主进程。用主进程去发送MQ消息。

import multiprocessing

result_list = multiprocessing.Manager().list()
p = multiprocessing.Process(target=get_similar_users, args=(message_body, ENV, result_list))
p.start()
p.join()
for d in result_list:
    mq_send(d, ENV)

使用multiprocessing.Manager创建一个主进程和子进程共享的list变量。

将共享list作为参数传递给子进程。子进程计算完毕后,将结果append到共享list中。

主进程等待子进程计算结束。将共享list中的内容发到MQ。