Twisted ПАиПП — Взгляд изнутри

Проблема

Внутри сервисов возникают задачи обработки множества запросов или\и распараллеливания задач для увеличения быстродействия. На такие вычисления уходит время, причиной может служить следующие ситуации:

  1. Интенсивные вычисления, например вычисление простых чисел. Большой расход ресурсов компьютера и процессорного времени в частности. (Многие сталкивались с такими задачами только в школе)
  2. Ожидании данных необходимых для расчета конечных результатов программы. (Некоторые также сталкивались с такими задачами в школе. Ждали пока за них решат задачу другие.)

 

Twisted ПАиПП — Общее видение

Прикладная область:

  1.  Мультисервисы
  2. Интеграция узлов распределенных систем
  3. Создание слабо связных, масштабируемых систем

 

Twisted - ПАиПП

ПАиПП - Практика Асинхронного и Параллельного Программирования

Буду писать ряд статей по данной тематике. Давно уже собирался. Планирую затронуть несколько тем:

  1. Общее видение
  2. Взгляд изнутри
  3. Классические примеры
  4. Практика в рабочих проектах
    • Постановка задачи
    • Проектирование Шаблоны проектирования
  5. Техника разработки (TDD)
  6. Управление пакетами (Release management)
  7. Документирование проекта

В качестве примера буду использовать код самого Twisted, Fats, DBsync(только теоретически), немного затрону Zope3.

Скоро выложу презентацию в удобоваримом виде, она была частично представлена на конференции Exception #07.

Twisted 8.0.1 release

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

Twisted 8.0.0pre1 features

Новое

  • twisted.python.modules is a new system for representing and manipulating module paths (i.e. sys.path) (#1951)

  • Log files now include seconds in the timestamps (#867)

  • objgrep now knows how to search through deque objects (#2323)

  • It is now possible to limit the number of log files to create during log rotation (#1095)

  • twisted.python.lockfile contains a DeferredFilesystemLock which gives a Deferred interface to lock file acquisition (#2180)

 

Twisted 8.0 pre release 1

Сегодня Radix объявил о предварительном выпуске версии Twisted 8.0.

Честно говоря я не совсем понял что повлияло на такой номер версии. Из того что мне удалось узнать на данный момент, могу сказать следующее:

1) Проделана большая работа Кристофером Армстронгом(Радикс) Автоматизация контроля версий. О части этой системы хотел рассказать в докладе на Ex07, но не успел =(.

 

New * Age

В последнее время все больше и больше людей присоединяется к разработкам в области *. Вышло API для разработки приложений и удобного описания сложной логики dialplan’ов в Ruby. Кроме того можно запросто прикрутить все к ROL. Специальный дистрибутив AsteriskNOW + adhearsion - это мощный прорыв вперед.

Cмотрим

Getting started

Пример плана дозвона

Writing dialplans

Все это здорово, а теперь о самом вкусном на мой взгляд.

В новой версии Asterisk 1.4 все больше внимания уделяется GUI для администрирования и автоматизации бизнес приложений на базе *. Одна из проблем - производительность такого IP-PBX. Представьте что у нас есть 1000 одновременных звонков которые надо обработать сложным сценарием плана дозвона. Заносить все в AGI не решение, т.к. это тяжелые и ресурсоемкие процессы для сервера, что влияет на производительность программной АТС при декодировании сигнала и как следствие ухудшает качество канала связи.

Решение не ново - FastAGI. Приложения которые запускаются в сессии отдельного сетевого сервиса. * в свою очередь может обращаться к ним:

 agi://host:port/?param0=val&param1=val
   

Теперь подробнее. Не секрет что существует окружение для разработки быстрых асинхронных сетeвых приложений на базе Python.

Twisted в студию! Вот пример реализованного API протокола FastAGI, а также некоторые вкусности на этой базе - StarPy. Все еще альфа на протяжении двух лет :).

Вот вам почва для размышления, скоро появится анонс нового протокола для FastAGI приложений на Twisted. Отличие от StarPy лишь в том, что библиотека умеет тестировать себя, стабильна, не требует лишних зависимостей, проще код.

Знакомство

Добрый день.

В данном блоге я собираюсь писать все интересные на мой взгляд вещи и конечно просто глупости. Надеюсь это будет полезно не только моим друзьям.

Ранее я занимался созданием сервисов на базе Asterisk. Мне очень нравилось, действительно увлекательное занятие. Не хочу чтобы навыки пропали даром или начали терять актуальность, поэтому буду описывать некоторые технологии и приемы разработки в этом блоге. Кроме того тут могут появляться темы связанные с Django, Zope 3, Twisted, методологиями и приемами разработки, linux хаками и т.д.

Для тех кто в танках

Астериск(Asterisk, *) - IP АТС(по буржуйский PBX) с открытым программным кодом. На базе * можно создавать большое количество малых и крупных автоматизированных систем телефонии, распределенных систем, а также вовсе неожиданные проекты по использованию * для управления другими системами. Технология не нова, но вокруг нее создается множество новых open source и закрытых проектов.

Инструментарий

  • Python - основной инструмент, красивый и удобный язык программирования.
  • Twisted - платформа для создания асинхронных сетевых приложений на базе python.
  • Django - платформа для быстрого создания web приложений на базе python.
  • Gentoo Linux - ручной пингвин.