Я сталкивался с этой проблемой несколько раз в разных вариантах.
Вариант 1 - eval()
Когда я хочу просто быстро что-то взломать, я использую eval()
или одного из его двоюродных братьев в stdlib.Перенесите источник в ваш мастер, затем скомпилируйте и оцените:
src = getSourceFromMaster()
obj = compile(src, "master.py", "exec")
exec(obj)
Пока ваш транспорт для передачи источника от клиента к серверу заслуживает доверия и действия, которые должен предпринять источник, относительно просты, это работает.Несколько раз мне требовалась более тесная интеграция между ведущей и подчиненной машинами, с большим количеством операций обработки в обратном направлении или сложных структур данных.В этих случаях я использую Pyro .
Вариант 2 - Pyro
Pyro - полнофункциональная, межплатформенная библиотека удаленного выполнения методов для Python.Я использовал его в производственной среде для отправки обработки с Linux-машины на Windows-машину и обратно, и она была супер стабильной.
Пример из своих документов:
Мастер:
# save this as greeting.py
class GreetingMaker(object):
def get_fortune(self, name):
return "Hello, {0}. Here is your fortune message:\n" \
"Behold the warranty -- the bold print giveth and the fine print taketh away.".format(name)
Ведомый:
# save this as client.py
import greeting
name=raw_input("What is your name? ")
greeting_maker=greeting.GreetingMaker()
print greeting_maker.get_fortune(name)
output:
$ python client.py
What is your name? Irmen
Hello, Irmen. Here is your fortune message:
Behold the warranty -- the bold print giveth and the fine print taketh away.
Самое удивительное в Pyro - это строка "import greeting
" в client.py - , что код приходит с сервера.
Если вы начинаете с простой установки ОС, вы можете нажать скрипт Python для размещения клиентского кода для любого из них с помощью SSH сразу после запуска нового экземпляра.Тогда у вас будет хорошая инфраструктура для работы.
Я не могу более подробно говорить о применении любого из них в AWS, а также о том, как они сравниваются с утилитами, предоставляемыми инфраструктурой AWS.Приветствуются идеи или обсуждение по этому вопросу.