LINUX.ORG.RU

[Python][Twisted] Запустить клиент на серваке.

 


0

1

Недавно начал раскуривать Twisted, возникли некоторые недопонимания.

Я делаю RPC-server. Во время обработки принятых данных (Читай, во время выполнения remote call) мне необходимо подключиться к другому серверу, получить-отправить некоторые данные.

Как сделать это правильно?

RPC - абстрактное понятие. Имеется в виду xml-rpc, perspective broker или что-то еще?

В общем случае, из хэндлера (как, впрочем, практически везде в twisted) всегда можно вернуть Deferred, в котором можно сходить к другому серверу, отдать еще один Deferred и т.п. пока не будет возможности, собственно, выдать результат.

Если имелся в виду xml-rpc, можно прочитать коротенькое howto здесь. Про PB здесь.

shylent
()
Ответ на: комментарий от vladimir-vg

Хм, JSON RPC поверх «чистого» TCP?

Может быть стоит воспользоваться существующей инфраструктурой twisted.web и использовать HTTP в качестве транспорта?

В общем случае, если наследовать от Protocol, то процесс будет выглядеть примерно так:

dataReceived(...) -> цепочка Deferred -> transport.write(...)

Можно посмотреть на существующую реализацию json rpc: https://code.launchpad.net/txjsonrpc

Присоединяюсь к mishok13 по поводу официальной документации, только, по-моему, в http://www.opendocs.net/python/twisted/howto/servers.html более релевантная информация, хотя там все полезно читать.

Также могу порекомендовать этот ресурс: http://krondo.com/?page_id=1327.

И, конечно же, use the source! Исходники twisted, в основном, вполне читаемы (хотя попадаются, надо сказать, действительно адские пассажи) и никто не мешает подсмотреть реализации существующих протоколов.

shylent
()
Ответ на: комментарий от shylent

Оу, я и не знал что реализация JSON-RPC на Twisted уже существует.

Да, спасибо за инфу.

vladimir-vg ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.