Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 262

$ python xmlrpc_server.py

Далее запустите клиент:

$ python xmlrpc_client.py

Double 7 is 14

После этого сервер выведет на экран следующее:

127.0.0.1 -- [13/Feb/2014 20:16:23] "POST / HTTP/1.1" 200 -

Популярными методами передачи данных являются HTTP и ZeroMQ. Дру-

гими распространенными кодировками, помимо XML, являются JSON, Protocol

Buffers и MessagePack. Существует множество пакетов для работы с RPC, ис-

пользующих JSON, но многие из них либо не поддерживают Python 3, либо ка-

жутся несколько запутанными. Взглянем на кое-что другое — реализацию Python

Сети

337

RPC в рамках MessagePack (http://bit.ly/msgpack-rpc). Установить ее можно следу-

ющим образом:

$ pip install msgpack-rpc-python

Этот вызов также установит tornado, написанный на Python веб-сервер, осно-

ванный на событиях, который эта библиотека использует как транспорт. Как

обычно, рассмотрим сервер первым (msgpack_server.py):

from msgpackrpc import Server, Address

class Services():

def double(self, num):

return num * 2

server = Server(Services())

server.listen(Address("localhost", 6789))

server.start()

Методы класса Services доступны благодаря RPC. Рассмотрим клиент msgpack_

client.py:

from msgpackrpc import Client, Address

client = Client(Address("localhost", 6789))

num = 8

result = client.call('double', num)

print("Double %s is %s" % (num, result))

Для того чтобы запустить этот код, следуйте обычным инструкциям — запусти-

те сервер, запустите клиент, посмотрите на результат:

$ python msgpack_server.py

$ python msgpack_client.py

Double 8 is 16

fabric

Пакет fabric позволяет вам запускать удаленные или локальные команды, загру-

жать или закачивать файлы и работать от лица привилегированного пользователя

с помощью команды sudo. Пакет использует Secure Shell (SSH, зашифрованный

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

удаленных машинах. Вы пишете функции (на Python) в так называемом файле

fabric и указываете, как их нужно запустить — локально или удаленно. Когда вы

запустите эти файлы с помощью программы fabric (которая называется fab и не

является отсылкой к Beatles или моющему веществу), вы указываете, какие уда-

ленные машины нужно использовать и какие функции вызывать. Это проще, чем

примеры RPC, которые мы рассмотрели ранее.

На момент написания этой книги автор пакета fabric вносил в свое творение поправки, ко-