LINUX.ORG.RU

Python и взаимодействие приложений по сети.


0

2

Задача: есть некой питонодемон (с питоноклассом(ми)), который надо дергать удаленно, получать результат выполнения и, желательно, чтобы при возникновении какой-то проблемы этот демон мог отослать на управляющий процесс что-то. Понятно что будет перманентное tcp соединение (с реконнектом).

Хотел попробовать D-Bus, но что-то толком не нашел описание как его использовать remote.

Есть Pyro, но в этом случае надо много писать руками. Уверен, что кто-то что-то уже придумал и сделал.

Знатоки, помогите.

Ответ на: комментарий от alabalaev

Не исключено - хорошие мысли приходят в разные головы независимо, а про Pyro я не знаю;-)

Я как то между делм пишу ч.2, но в общем то что сейчас работает (активно юзаю в паре проектов) позволяет как раз удаленно работать с некоторым питоноклассом на сервере (включая блокировки), причем это совершенно незаметно, а исключения с сервера на клиент приходят как свои, со всем стеком включая серверую часть.

Есть возможность передачи файлов, надо вот будет прикрутить сервер для автообновления клиентов... про воостановление сессии думал, но мне пока неактуально. Пришлось так заморачиваться поскольку сервер на линукс а все клиенты под виндой, из доступных протоколов фактически был тока TCP/IP.

AIv ★★★★★
()
Ответ на: комментарий от alabalaev

No-no-no, это название пакета из стандартной библиотеки, который может помочь в твоей проблеме.

Предоставляет обертки над сокетами, для организации транспорта, обеспечивающего передачу примитивных питонячьих объектов.

baverman ★★★
()
Ответ на: комментарий от AIv

Это побочный продукт, один из строительных кирпичиков. А вообще пакет предназначен для организации параллельного выполнения задач, с очередями, синхронизацией и т.д.

baverman ★★★
()

Рекомендую twisted. Для удаленного запуска кода можно использовать компонент Perspective Broker. Ну и данные просто по TCP (или какой вы протокол планируете использовать) можно гонять, конечно.

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

Он случаем человеческие шреды не реализует???

Из документации:

multiprocessing — Process-based “threading” interface

Но человеческими их можно назвать с большой натяжкой. Специфика IPC все-таки присутствует в достаточном количестве.

baverman ★★★
()
Ответ на: комментарий от AIv

Он предоставляет threading-like API только с созданием множественных процессов. Ну, в том числе (но не только!), чтобы обойти GIL.

И да, если нет опыта работы с twisted, вполне вероятно, что проще / быстрее будет действительно использовать multiprocessing, а не разбираться в twisted.

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

Не, тогда не то, но все равно гляну. Спасибо;-)

AIv ★★★★★
()
Ответ на: комментарий от arhibot

Можно просто взять Pyro, но в этом случае слушатель Pyro будет везде и на каждый запрос будет инициироваться новое соединение. Не знаю как текущая реализация, но оно еще не умело ставить запросы в очередь. Ее надо прикручивать руками. Есть замечательная штука - D-Bus. Вот хотелось бы аналог и по сети :)

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

>на каждый запрос будет инициироваться новое соединение.
и?

Еще вариант взять какой-нибудь mq и не знать бед.

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

потому и обратился за советом к знатокам :)

alabalaev
() автор топика

берешь примитивные методы интеграции - SOAP, JSON-RPC и крутишь вертишь как хочешь.

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

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

>Есть замечательная штука - D-Bus. Вот хотелось бы аналог и по сети :)

а с каких это пор дбас у нас по сети не умеет работать?

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

> спасибо, похоже то что нужно.

*задумчиво* и на что только питоноводы готовы идти лишь бы не учить нормальных языков

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