LINUX.ORG.RU

[python][twisted] Веб-интерфейс на twisted.web

 


0

2

Для работы с сетью, да и, впрочем, практически для любых i/o-ориентированных задач использую twisted.

Соответственно, к написанному на twisted функционалу нужен интерфейс. Нередко - веб-интерфейс, и не просто REST или, там, RPC-служба, а полноценный, так сказать, человеческий интерфейс с формочками, рюшечками, и т.п.

Надо сказать, что twisted.web, сам по себе - просто web-сервер, а не web-фреймворк, - ничем, кроме url-роутинга, он жизнь не упрощает, то есть такие вещи, как обработку форм, шаблонизацию и т.п. нужно прикручивать сторонние. Кстати, twisted.web умеет быть WSGI-контейнером, а значит из-под него можно запустить фреймворк типа django или pylons. Но только вот эти фреймворки ничего на знают про Deferred, коллбэки и прочая, то есть к асинхронному API из них напрямую обращаться нельзя.

В общем, с тем или иным успехом были испробованы следующие подходы:

  • сборная солянка из компонентов: для форм WTForms (кстати, очень удобная, как мне кажется, библиотека), для шаблонов Jinja2, ну и другие мелочи, в том числе и самопальные. Кроме этих библиотек, есть, конечно, и куча других, просто я все достаточно известные/активные перепробовал и остановился именно на этих (из-за фич и удобства использования).
  • nevow - фреймворк, специально сделанный под twisted. Насколько мне известно, разработка его остановлена. Документации почти нет.
  • использование blockingCallFromThread из django (или любого другого фреймворка), запущенного из-под WSGI-контейнера twisted.web. blockingCallFromThread для треда, из которого он вызван, выглядит, как нормальный синхронный вызов, так что можно обратиться к асинхронному API, подготовить данные и вернуть их в WSGI-тред, а потом продолжать с ними работать внутри django как обычно, то есть рисовать/обрабатывать формы и т.п.

Занимается ли кто-нибудь из присутствующих подобным? Может быть, есть библиотеки, о которых я почему-то не знаю, которые могут упростить такого рода задачу?


Не совсем понятен вопрос. Практически все веб-фреймворки могут работать в качестве wsgi приложения. Проблемы скрещивания с twisted, как таковой, нет.

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