我有一个Python应用程序(带GUI,使用PyQt4),由用户在几个实例中产生。该应用程序是用来执行一些长时间运行的任务(约几个小时到几天),所以我愿意加上一个额外的“监控”应用程序,将做这样的事情:Python进程间通信
- 找出所有正在运行的进程其他应用程序的
- 获得运行中的操作的状态(完成工作,百分比,错误消息,...)
- 最终发送一些命令到应用程序告诉他们暂停,恢复,终止,...
一种适合这项工作的方法是RPyC,唯一的问题,它似乎只能在TCP套接字上工作,就像我找到的大多数RPC库一样。但是这导致必须打开几个不需要的套接字,这些套接字只在本地主机上侦听,并且必须创建某种端口分配机制以避免两个进程试图在同一个端口上侦听。然后监视器需要一个端口列表来写入某个地方,或者去查找在TCP端口上侦听的进程,并试图找出它们是否是正确的应用程序或ot实例。听起来像一团糟。
管理互通的最好方法我现在想到的可能是在'/var/run/myapp/myapp-.sock'中有一些unix套接字,然后创建一个模块所有肮脏的东西暴露了一些方法,如listMyApps()
和getMyApp(pid)
返回第一个pid列表,第二个可用于与该应用程序通信的对象。
现在,我正在寻找最好的方法来实现这个目标。 真的,没有任何东西可以通过unix套接字管理RPC吗?听起来有点奇怪,但我无法找到任何可以装配的东西。
有什么建议吗?
注:我不想扭转的东西(应用程序是一个单一的监控服务器的客户端),以避免问题的监测应用程序崩溃的情况下,并让我自由地创建连接到这些插座其他应用程序并提出请求。
注:安全不是一个问题,因为所有这些东西是在私人运行,关闭防火墙和网络:),再加上,请求由只有受信任的用户在本地主机上完成的。
我的意思是什么,我不不想在每个进程的不同端口上设置监听套接字..我想到了信号,但是它们绝对不足以满足我需要,因为我需要按顺序在各种应用函数上运行方法以查询其状态(不仅完成百分比,但更复杂的细节),或执行一堆操作“就好像用户点击XYZ用户界面按钮”一样.. – redShadow 2011-02-07 22:47:57