У меня есть приложение Python (с графическим интерфейсом, использующим PyQt4), которое порождается пользователем в нескольких случаях.Приложение используется для выполнения некоторых длительных задач (от нескольких часов до нескольких дней), поэтому я готов добавить дополнительное приложение для «мониторинга», которое будет выполнять такие функции:
- найти всезапущенные процессы другого приложения
- получают состояние запущенных операций (выполненные задания, проценты, сообщения об ошибках, ...)
- в конечном итоге отправляют приложениям команды с указанием приостановить работу, resume, stop, ...
Один из подходящих способов работы - это RPyC , единственная проблема, кажется, работает только через сокеты TCP, как и большинствоБиблиотеки RPC я нашел.Но это приводит к необходимости открывать несколько ненужных сокетов, прослушивающих только на локальном хосте, и создавать какой-то механизм распределения портов, чтобы избежать двух процессов, пытающихся прослушивать один и тот же порт.И затем монитору нужен список портов, которые нужно записать куда-нибудь, или найти процессы, прослушивающие порты TCP, и попытаться выяснить, являются ли они экземплярами правильного приложения или ot.Звучит как беспорядок.
Самый хороший способ управления связью, о котором я мог подумать в данный момент, - это иметь несколько сокетов Unix, скажем, в /var/run/myapp/myapp-.sock,и затем создание модуля, который выполняет всю грязную работу, обнажая некоторые методы, такие как listMyApps()
и getMyApp(pid)
, возвращая первый список pids, второй - объект, который можно использовать для связи с этим приложением.
Теперь я смотрю на лучший способ сделать это .. На самом деле, ничего не было сделано для управления RPC через сокеты Unix?Звучит немного странно для меня, но я не смог найти ничего подходящего ..
Есть предложения?
ПРИМЕЧАНИЕ: Я не хочупоменять местами (приложения являются клиентом одного сервера мониторинга), чтобы избежать проблем в случае сбоя мониторинга приложений и позволить мне свободно создавать другие приложения, которые подключаются к этим сокетам и делают запросы.
ПРИМЕЧАНИЕ: Безопасность не является проблемой, так как все это работает в частной, закрытой и защищенной сетью сети :), кроме того, запросы выполняются на локальном хосте только доверенными пользователями.