Во-первых, позвольте мне обратиться к восприятию, что Невов мертв.Проект панели запуска, содержащий код для 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, вам, вероятно, следует задать его в своем собственном вопросе переполнения стека.