Какой путь пойти с витой и веб-программированием? - PullRequest
9 голосов
/ 30 января 2011

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

Сайт Twisted рекомендует Nevow, но я не совсем уверенесли это хороший выбор.Похоже, что их веб-сайт некоторое время не работает, а на странице панели запуска не было обновлений в течение полугода.Этот проект мертв?Кроме того, я видел обсуждение перемещения частей Nevow в twisted.web в списке рассылки twisted-web.Итак, все еще рекомендуется для новых разработок?

Другая идея заключалась в использовании Django.В любом случае мне понадобится аутентификация пользователя и разрешения в config-интерфейсе, и я с ним хорошо знаком.(Я никогда не работал с Nevow или twisted.web) Но, кажется, довольно сложно связать оба мира, я мог только найти примеры запуска Django с WSGI в Twisted.

Есть ли другие возможностискользкий пользовательский интерфейс поверх витой?

Ответы [ 3 ]

9 голосов
/ 30 января 2011

Во-первых, позвольте мне обратиться к восприятию, что Невов мертв.Проект панели запуска, содержащий код для Nevow (и остальных проектов Divmod): divmod.org на панели запуска .Отказ оборудования сильно повлиял на публичное присутствие проекта, но он все еще существует, и другие вещи (такие как вики и тикеты) находятся в процессе восстановления.Сейчас не ведутся активные работы по техническому обслуживанию, но в основном потому, что этого достаточно для большинства пользователей;Есть много людей, которые зависят от Невова и были бы очень расстроены, если бы он перестал работать.Эти люди имеют навыки и опыт, необходимые для продолжения его поддержания.Так что, хотя сейчас он не активно продвигается, я думаю, что он вряд ли уйдет.

Моя долгосрочная надежда на Невов будет следующей.(Я бы сказал «план», но так как в последнее время я не принимал активного участия в его обслуживании, это действительно зависит от тех, кто это делает.) Во-первых, я хотел бы извлечь его шаблоны и перевести их в витую.веб.Чистый, не осуждаемый API для Nevow в основном покрывается nevow.page.Element и различными загрузчиками .Twisted сам хочет генерировать HTML в нескольких местах, и эти средства могут быть полезны.Затем мы должны выбросить части «appserver» и модели ресурсов Nevow.Это в основном случайный набор исправлений или изменений для twisted.web, большинство из которых присутствовали в той или иной форме в twisted.web2 и поэтому либо будут откатываться в twisted.web в любом случае, либо уже были там применены.Наконец, есть вопрос Афины.В то время как двусторонняя связь является одной из сильных сторон Twisted, Афина сама по себе является гигантской, растягивающейся кодовой базой JavaScript и, вероятно, должна оставаться своим собственным проектом.

В-третьих, по основному вопросу, учитывая эту информацию, что вы должны делатьсейчас?

Вообще говоря, я бы сказал, "используйте nevow".У проекта есть некоторые недостатки, ему нужно больше документации, а его API нужно урезать, чтобы устранить некоторые старые и сломанные вещи, но он все еще весьма полезен и очень жив.Чтобы восполнить немного скудную документацию, вы можете присоединиться к каналам #divmod или #twisted.web на Freenode, чтобы получить помощь в этом.Если вы поможете, предоставив патчи, где сможете, вы обнаружите, что получите много восторженной помощи.Когда вы игнорируете устаревшие части, у Nevow есть довольно маленький, вменяемый, извращенный дружественный API.Последствия плана эволюции Невова, который я изложил выше, на самом деле довольно минимальны.Если это вообще произойдет, то для you это означает, что через 1-5 лет при обновлении до новой версии Twisted вы получите пару предупреждений об устаревании, измените некоторые import строки в вашем коде от from nevow.page import ...; from nevow.loaders import ... до некоторой гипотетической новой вещи, такой как from twisted.web.page.element import ...; from twisted.web.page.templates import ..., или что-то подобное.Большая часть API после этого пункта должна оставаться прежней, и, безусловно, концепции высокого уровня не должны сильно меняться.

Основное преимущество, которое вы получаете от использования Nevow, заключается в том, что он дружествен к асинхронности и может отображать страницыв вашей основной теме, не блокируя вещи.Кроме того, вы можете получить действительно легкий COMET бесплатно с Athena.

Вы также можете использовать Django.Это не так удобно для асинхронных операций, но, очевидно, имеет более широкую базу поддержки.Тем не менее, «не такой удобный для асинхронности» не означает «сложный в использовании».Вы можете запустить его в twisted.web через WSGIResource , и просто использовать blockingCallFromThread в своем приложении Django для вызова любого Twisted API, который возвращает Deferred, который должен быть достаточно мощным, чтобы сделать примерновсе, что вы хотите.Если у вас есть более конкретный вопрос о том, как создавать экземпляры веб-ресурсов Twisted для объединения Twisted Web и Django, вам, вероятно, следует задать его в своем собственном вопросе переполнения стека.

6 голосов
/ 30 января 2011

Nevow по-прежнему является хорошим выбором, если вам нужна поддержка Deferreds в используемой вами шаблонной системе (она не мертва). Он также имеет несколько преимуществ по сравнению с обычным Twisted Web, когда речь идет о сложной отправке URL. Тем не менее, это в основном просто система шаблонов. Twisted Web - это настоящий веб-сервер. Так или иначе, вы собираетесь использовать Twisted Web. Фактически, даже если вы используете Django в контейнере WSGI Twisted Web, вы все равно будете использовать Twisted Web. Так что изучение вещей о Twisted Web не повредит вам.

Если вы собираетесь генерировать любое количество HTML, то вам очень хочется использовать библиотеку шаблонов HTML. К этому моменту никто не должен конструировать HTML, используя примитивные строковые операции. Так что, если вы хотите использовать одну из других библиотек шаблонов Python HTML - Cheetah, Quixote и т. Д. - вместо Nevow, это здорово! Вы просто собираетесь использовать библиотеку шаблонов, чтобы получить строку для записи в ответ на запрос HTTP. Витой паутине все равно, откуда взялась строка.

И если вы действительно хотите что-то сделать с Django (или другой системой на основе WSGI), то вы, безусловно, можете развернуть это в своем процессе Twisted с помощью поддержки WSGI в Twisted Web. И вы по-прежнему можете взаимодействовать между приложениями WSGI и остальной частью вашего кода Twisted, если вы проявите небольшую осторожность - приложения WSGI работают в пуле потоков, а API-интерфейсы Twisted не являются поточно-ориентированными, вы должны вызывать их с помощью reactor.callFromThread или один из небольшого числа похожих API (в частности, blockingCallFromThread иногда является полезным инструментом более высокого уровня для использования).

1 голос
/ 06 января 2014

В этот момент Невов окончательно умер. В качестве иллюстрации того, насколько он мертв, есть ошибка , которая препятствует установке Nevow с использованием pip , которая была исправлена ​​на транке в 2009 году, но ее нет ни в одном выпуске, поскольку с тех пор не было релиза. .

twisted.web и, в частности, twisted.web.template покрывают почти все, что было полезно в Nevow, и должны использоваться для любого нового проекта, который рассматривал возможность использования Nevow.

...