首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多处理在已有Python进程之间进行通信

使用多处理在已有Python进程之间进行通信
EN

Stack Overflow用户
提问于 2014-03-16 07:22:31
回答 2查看 297关注 0票数 0

是否有可能对我没有生成的进程使用“多进程”通信?

“多处理”模块看起来非常适合我的需要,但是在所有的例子中,一个进程会产生另一个进程。如果不是我想与之沟通的过程,我如何才能得到它的“句柄”呢?

背景资料

总共有三个进程--全部是Python2.7--一个工作程序、一个看门狗和一个web服务器。

这个工人是一个长期运行的测试系统.我希望web服务器能够查询工作人员,以查看其进展情况。由于工作人员经常崩溃,监视狗进程不时地重新启动它(因此它将有一个新的PID)。

我可以访问工人和看门狗的来源,但我想尽可能少地修改这些信息。

我的想法是让web服务器定期查询工作人员,并共享,比如说,一个小块。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-16 08:30:40

根据您所描述的,您希望"worker“(可能会崩溃并重新启动)将一些数据字典发布到"web服务器”。我认为最简单的方法是让web服务器通过HTTP接收来自工作人员的消息。您可以将工作人员的数据编码为JSON,并将其放入HTTP正文中。这利用了您可能已经使用的协议,并避免了当工作人员的PID发生变化时重新发现它时必须协调工作人员的重新启动。

当然,如果服务器在一段时间后没有看到更新,那么它就可以认为工作人员已经死了。因此,它甚至可以包含看门狗的功能。

票数 2
EN

Stack Overflow用户

发布于 2014-03-16 09:01:25

是否有可能对我没有生成的进程使用“多进程”通信?

不是的。multiprocessing模块可以像它那样工作,因为进程在幕后“知道”它们之间的关系“,即使您没有看到它。

有几种可能的解决办法;

  1. 将看门狗折叠到web服务器中。然后,您可以使用多处理启动工作人员,并在工作人员和web服务器之间进行通信。
  2. 使用IPC,例如插座。让the服务器在独立端口上侦听与工作人员的连接。使用主机和端口组合,socket.getaddrinfo()将返回连接所需的信息。
  3. 正如John解释的那样,使用巧尽心思构建的HTTP请求将数据从工作人员发送到web服务器。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22434131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档