Каковы доступные варианты межпроцессного взаимодействия в широковещательной и потребительской модели - PullRequest
0 голосов
/ 21 сентября 2019

Рассматривайте мой основной сценарий как цикл, который постоянно транслирует различные события.Например:

FileChange: File at address XXX has changed.
FileDeleted: File at address XXX has been deleted.
ScreenSaver: Screen saver named YYY got activated.
...

То, что я намереваюсь сделать, - это иметь другие приложения, которые я бы добавил сейчас (и позже), слушать, какое основное приложение вещает и связано ли оно с ним (скажем,скрипт для обработки FileChange событий), они получают сообщение и выполняют свою собственную обработку.

Какие у меня есть варианты для достижения этой модели межпроцессного взаимодействия?

1 Ответ

0 голосов
/ 22 сентября 2019

Если вы структурируете свое приложение, используя потоки, вы можете использовать для этого библиотеку python queue https://docs.python.org/3/library/queue.html - это класс, поддерживающий несколько производителей и потребителей.Я часто использую это для структурирования своих приложений для распространения событий среди разных слушателей.

Если вы хотите разделить разные процессы, вы можете выбрать что-то из Рекомендованный Python модуль публикации / подписки / отправки?

В вашем случае сокет домена unix может быть простой возможностью без использования сложных каркасов (вы даже можете написать программы оболочки для доступа к ним).Между тем, похоже, что он работает и под Windows ( AF_UNIX эквивалент для Windows ).Ваша служба может публиковать события с простым протоколом ASCII, например <EVENT>:<PATH> на сокете.

...