여러 인스턴스에서 사용자가 생성 한 Python 응용 프로그램 (GUI 사용, PyQt4 사용)이 있습니다. 실행중인 모든 프로세스를 찾을 수파이썬 프로세스 간 통신
- : 응용 프로그램 (몇 일 몇 시간에 대해) 약간 긴 실행 작업을 실행하는 데 사용됩니다, 그래서 내가 좋아하는 일을 할 것입니다 추가 "모니터링"응용 프로그램을 추가 기꺼이 다른 응용 프로그램의
- 는
- 결국 중지, 일시 중지, 다시 시작하라고 말하고 응용 프로그램에 몇 가지 명령을 보내 (... 작업 완료, 비율, 오류 메시지) 실행중인 작업의 상태를 가져 ...
작업에 적합한 한 가지 방법은입니다. 210, 유일한 문제는 내가 찾은 대부분의 RPC 라이브러리와 마찬가지로 TCP 소켓을 통해서만 작동하는 것 같습니다. 그러나 이것은 localhost에서만 수신 대기하는 여러 불필요한 소켓을 열어야하고 동일한 포트에서 수신 대기하려는 두 프로세스를 피하기 위해 일종의 포트 할당 메커니즘을 만들어야합니다. 그리고 나서 모니터는 어딘가에 쓰여지는 포트 목록을 필요로합니다. 또는 TCP 포트에서 수신 대기하고있는 프로세스를 찾아 올바른 애플리케이션 또는 인스턴스인지 여부를 파악하려고 시도합니다. 엉망진창처럼 들리네.
내가 생각할 수있는 상호 통신을 관리하는 가장 좋은 방법은 '유닉스 소켓'을 가지고있을 것입니다. '/var/run/myapp/myapp-.sock'에서 말한 다음, listMyApps()
및 getMyApp(pid)
과 같은 일부 메소드를 노출하는 모든 더러운 것들은 첫 번째 pid 목록을 반환하고 두 번째는 해당 앱과의 통신에 사용될 수있는 객체를 반환합니다.
지금, 나는 그것을 성취하는 가장 좋은 방법을 찾고 있습니다. 실제로, 유닉스 소켓을 통해 RPC를 관리하기 위해 이미 수행 한 작업은 무엇입니까? 나에게 이상하게 들리지만 맞는 것만 찾았습니다.
어떤 제안이 있으십니까?
참고 : 나는 모니터링 응용 프로그램 충돌의 경우,이 소켓에 연결하는 다른 응용 프로그램을 만들 날 무료시키는에 문제를 방지하기 위해 (응용 프로그램은 단일 모니터링 서버의 클라이언트이다) 일을 반대로하고 싶지 요청을합니다.
참고 : 보안 요청이 신뢰할 수있는 사용자 만하여 로컬 호스트에서 수행되며,이 모든 물건을 개인에서 실행되기 때문에, :) 폐쇄 및 네트워크 방화벽 문제가되지 않습니다, 플러스.
BTW, SO에서 사용하는 모노 스페이스 글꼴 monospace가 아니면 전혀 그렇지 않습니다. 아스키 아트는보기 흉한 것 같습니다 : ( – redShadow
저는 지금도 똑같은 딜레마를 겪고 있습니다 - 가끔씩 사용자 컨트롤 (정지, 시작 등)이 필요한 여러 개의 장기 실행 프로세스가 독립적으로 생성되었습니다.이 답변은 ' 11. 여전히 dbus 솔루션을 권장 하시겠습니까? –