Передача сообщений между удаленными MailboxProcessors?
Я использую MailboxProcessor
классы для того, чтобы держать отдельных агентов, которые делают свое дело. Обычно агенты могут общаться друг с другом в одном и том же процессе, но я хочу, чтобы агенты общались друг с другом, когда они находятся в разных процессах или даже на разных машинах. Какой механизм лучше всего подходит для осуществления связи между ними? Есть ли какое-то стандартное решение?
Обратите внимание, что я использую экземпляры Ubuntu для запуска агентов.
1 ответ
Я думаю, что вам нужно написать свои собственные подпрограммы для сериализации сообщений, передать их через границы процесса и затем отправить их на другую сторону. Это также потребует внедрения системы идентификаторов, где каждый почтовый ящик имеет идентификатор, и процессы могут отправлять сообщения на идентификаторы, а не просто в Mailbox.Send. Это нелегко, поскольку локальные ящики будут иметь доступ к локальной памяти, а удаленные почтовые ящики - нет.
Я бы посмотрел на что-то вроде RPyC (http://rpyc.wikidot.com/), так как он предоставляет протокол, похожий на тот, который вы ищете.
В основном ответ "нет", на самом деле нет хорошего способа сделать это.