是否有可能对我没有生成的进程使用“多进程”通信?
“多处理”模块看起来非常适合我的需要,但是在所有的例子中,一个进程会产生另一个进程。如果不是我想与之沟通的过程,我如何才能得到它的“句柄”呢?
背景资料
总共有三个进程--全部是Python2.7--一个工作程序、一个看门狗和一个web服务器。
这个工人是一个长期运行的测试系统.我希望web服务器能够查询工作人员,以查看其进展情况。由于工作人员经常崩溃,监视狗进程不时地重新启动它(因此它将有一个新的PID)。
我可以访问工人和看门狗的来源,但我想尽可能少地修改这些信息。
我的想法是让web服务器定期查询工作人员,并共享,比如说,一个小块。
发布于 2014-03-16 08:30:40
根据您所描述的,您希望"worker“(可能会崩溃并重新启动)将一些数据字典发布到"web服务器”。我认为最简单的方法是让web服务器通过HTTP接收来自工作人员的消息。您可以将工作人员的数据编码为JSON,并将其放入HTTP正文中。这利用了您可能已经使用的协议,并避免了当工作人员的PID发生变化时重新发现它时必须协调工作人员的重新启动。
当然,如果服务器在一段时间后没有看到更新,那么它就可以认为工作人员已经死了。因此,它甚至可以包含看门狗的功能。
发布于 2014-03-16 09:01:25
是否有可能对我没有生成的进程使用“多进程”通信?
不是的。multiprocessing模块可以像它那样工作,因为进程在幕后“知道”它们之间的关系“,即使您没有看到它。
有几种可能的解决办法;
socket.getaddrinfo()将返回连接所需的信息。https://stackoverflow.com/questions/22434131
复制相似问题