Twisted

From JaWiki (Jabber/XMPP wiki)
Revision as of 13:20, 24 May 2007 by Feez (Talk | contribs) (еще немного описание)

Jump to: navigation, search
Twisted
Информация
Адрес: http://twistedmatrix.com/trac/
Язык: Python
Реализация стандартов
Использование
Программы, использующие Twisted

Twisted -- framework для написания сетевых приложений. Предоставляет механизмы для легкой реализации сетевого сервера и клиента. Есть классы облегчающие реализацию своего протокола, а также уже реализована обработка большого числа существующих протоколов, в том числе и XML-потока Jabber-а.

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


Для начинающего Twisted-разработчика

В отличии от многих других библиотек и фреймворков для реализации Jabber-приложений, в twisted-e обработка нескольких клиентских соединений производится не через потоки или процессы, а через конечный автомат (FSM). Это заставляет при написании приложения придерживаться нескольких правил:

  1. Функция не должна долго думать. Так как практически все соединения обрабатываются в одном потоке и в одном цикле, то каждая пауза сказывается на всех. Поэтому "долгие" задачи должны быть выделены в отдельный поток, который в конце работы передаст результат с помощью вызова функции в общем цикле (например с помощью twisted.internet.threads.deferToThread).
  2. Вся работа с внешними и потенциально-тормознутыми данными, это базы данных, сеть и даже работа с файлами, по тем же причинам должна быть разделена на две части (обычно через объект Deferred):
    1. Первая отправляет запрос
    2. Вторая (callback) обрабатывает результат когда он появится.
  3. Вся работа с сетью осуществляется в небезопасном, с точки зрения потоков, режиме. Поэтому для отправки в сеть каких-либо данных из потока необходимо воспользоваться специальными функциями, которые вставят отправку в общий цикл (reactor.callFromThread)

Для Jabber разработчика

Реализация Jabber протокола находится в пакете twisted.words.protocols.jabber.

ToDo: про создание и отправку станз
ToDo: про создание обработчиков

Пример клиентского приложения

Ссылки

Category:Twisted

См. также