Связь с сервером с запросами через поток. Какой правильный путь? - PullRequest
1 голос
/ 24 января 2010

Я пишу свое первое сетевое приложение. Он манипулирует клиентом jabber и связывается с некоторыми сервисами через IQ-строфы. Но детали не важны.

Это взаимодействие работает через витой xmlstream (язык Python). Типичные ситуации описаны здесь: http://juick.com/help/api/xmpp/ Короче говоря, я могу отправить «запрос», и сервер использует меня с «результатом».

Я реализовал некоторые основные действия, такие как «отправить сообщение», «выполнить действие на полученное сообщение». Проблема в работе с потоком. Лучше ли использовать deferreds для запроса каких-либо данных с сервера? А как вернуть результат туда, где он нужен?

Вы можете посмотреть мой код здесь: http://bitbucket.org/boh/tmp/src/56c131cd1e62/juick_app/twisted_app.py Я пытался сделать его минималистичным.

1 Ответ

0 голосов
/ 24 января 2010

Чтобы связать ответ с ответом, вы используете атрибут iq.id. Вы можете сохранить несколько отсрочек в кеше, проиндексированном по id, и запускать их, когда они получают ответ. Поскольку XMPP основан на TCP, вы все равно получите ответы в правильном порядке. Вы можете закрыть кеш и запустить errback отложенного, если deferred находился в кеше некоторое время.

...