Какой модуль RPC мне следует использовать для реализации RCP в Python и чтобы позже можно было изменить метод подключения? - PullRequest
0 голосов
/ 08 декабря 2011

Мне нужно реализовать RPC из Python в Python, но методы подключения довольно ограничены из соображений безопасности.

В настоящее время кажется, что я могу подключиться, используя SSH и запустить один Python.сценарий в удаленной системе.

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

Другое потенциальное ограничение касается версии Python, она должна работать с Python 2.5-2.7, даже если клиент и сервер работают под разными версиями.

Что мне следует использовать, пожалуйста, предлагайте, только если у вас был успешный опыт работы сэто, иначе я тоже могу гуглить;)

Ответы [ 4 ]

1 голос
/ 08 декабря 2011

Я бы сказал, что самый простой способ взаимодействия двух разных процессов Python в вашем случае - это использование pyro3 .Недавно я использовал pyro4 в небольшом проекте, и было очень эффективно позволить мне сосредоточиться на информации, которую я хотел отправить / получить, а не на способе ее кодирования / декодирования должным образом.

Я рекомендую вам использовать v3, потому что v4 не тестируется на python 2.5 в соответствии с файлом tox.ini в исходных текстах, поэтому у вас могут возникнуть некоторые проблемы.

Что касается работы с сетью, эта библиотека заботится осами сокеты, поэтому нет явной поддержки telnet или ssh (хотя использование paramiko есть в списке TODO).Хене, тебе, вероятно, нужно полагаться на ssh-туннели, как в этом примере .

0 голосов
/ 20 августа 2018

Интересно ли вам использовать что-то с rabbitmq для отправки принимающих команд и журналов?

https://github.com/nvalerkos/cronio

Это python 2.7 нуждается в rabbitmq

0 голосов
/ 01 февраля 2013

Spyne поддерживает подключаемые протоколы и транспорты, но пока не поддерживает SSH (или любой другой сокет-подобный транспорт).Это стабильный, но довольно новый проект, особенно клиентская логика требует серьезной работы.

Что касается вашего первоначального вопроса, среди сериализаторов, с которыми я знаком (это в основном то, что вы видите в сети spyne).site) наиболее подходящим для передачи через потоковый транспорт является MessagePack, так как он поддерживает интерфейс итератора над файлом-подобным-объектом (он же десериализация потоковой передачи).

0 голосов
/ 11 декабря 2011

В качестве частичного решения для Python 2.6+ вы можете взглянуть на Versile Python (в разработке), мы только что добавили поддержку управляемой реактором байтовой связи по каналам (требуется платформа, которая позволяет выбирать .select на дескрипторах файла канала, т.е. не Windows). Это позволяет связывать с VPy ORB через каналы или стандартный ввод / вывод. Посмотрите этот рецепт для примера, как его можно использовать с ssh.

Versile Python требует Python 2.6+ или 3.x, поэтому, к сожалению, не работает с 2.5.

...