Соедините два демона в Python
Каков наилучший способ соединить два демона в Python?
У меня есть демоны A и B. Я хотел бы получать данные, сгенерированные B в модуле A (возможно, двунаправленный). Оба демона поддерживают плагины, поэтому я хотел бы прекратить общение в плагинах. Какой лучший и кроссплатформенный способ сделать это?
Я знаю немного механизмов из низкоуровневых решений - совместно используемую память (C/C++), linux pipe, сокеты (TCP/UDP) и т. Д. И немного высокоуровневых - очередь (JMS, Rabbit), RPC.
Оба демона должны работать на одном хосте, но очевидно, что лучший подход - абстрагироваться от типа соединения.
Каковы типичные решения / библиотеки в Python? Я ищу элегантное и легкое решение. Мне не нужен внешний сервер, просто два процесса общаются друг с другом.
Что я должен использовать в Python для этого?
2 ответа
Вы можете использовать сокеты для связи процесса: http://docs.python.org/howto/sockets.html
Также для этого подходят вызовы удаленных процедур: Python XML RPC http://docs.python.org/library/xmlrpclib.html или Google Protobuf http://code.google.com/p/protobuf/ https://developers.google.com/protocol-buffers/docs/pythontutorial
Я не уверен, насколько интенсивен ваш трафик, но я бы порекомендовал пакет asyncore. Его довольно просто использовать и он основан на сокетах.
Я сделал командный паттерн с этим давным-давно. Я могу выкопать код, если вам интересно.