Советы по настройке / управлению стеком WSGI?
Вопрос
Просмотрев множество полезных и блестящих фреймворков Python, я обнаружил, что ни один из них и близко не подходит к тому, что мне нужно, или не предоставляет способ больше, чем мои потребности.Я хочу сам кое-что собрать воедино;можно было бы определить это как фреймворк, но не полный стек.Однако я не могу найти в Интернете то, что сообщество Python считает правильным / стандартным способом управления промежуточным программным обеспечением WSGI в приложении.
Я не ищу предложений по фреймворку, если только это не для того, чтобы привести пример способов управления промежуточным программным обеспечением WSGI.Я также не ищу информацию о том, как заставить веб-сервер взаимодействовать с python - это немного я понимаю.
Скорее, я ищу совет о том, как указать python, какие компоненты / промежуточное программное обеспечение поместить в стек и в каком порядке.Например, если бы я хотел использовать:
Spawning-->memento-->AuthKit-->(?)-->MyApp
как бы я расположил эти компоненты в правильном порядке и как бы я настроил дополнительный элемент (скажем, маршруты), прежде чем MyApp
?
Итак;Можете ли вы посоветовать общий / правильный / стандартный способ управления тем, какое промежуточное программное обеспечение включено в стек WSGI для приложения Python?
Редактировать
Спасибо Майклу Диллону за рекомендацию Фреймворк "Сделай сам", что помогает осветить мою проблему.В раздел промежуточного программного обеспечения в этом документе говорится, что следует обернуть промежуточное программное обеспечение A в промежуточное программное обеспечение B, B в C и так далее:
app = ObjectPublisher(Root())
wrapped_app = AuthMiddleware(app)
from paste.evalexception import EvalException
exc_wrapped_app = EvalException(wrapped_app)
Который показывает, как это сделать очень простым способом.Я понимаю, как это работает, однако это кажется слишком простым при работе с несколькими пакетами промежуточного программного обеспечения.
Есть ли лучший способ управлять тем, как эти компоненты промежуточного программного обеспечения добавляются в стек?Может быть, общий шаблон проектирования, который считывается из конфигурационного файла?
Решение
Это то, что делает фреймворк.Некоторые фреймворки, такие как Django, довольно жесткие, а другие, такие как Pylons, облегчают смешивание и сопоставление.
Поскольку вы, вероятно, рано или поздно будете использовать некоторые компоненты WSGI из проекта Paste, вы могли бы также прочитать эту статью от the Paste folks о Фреймворк "Сделай сам".Я не предлагаю вам пойти и создать свой собственный фреймворк, но в статье дается хорошее объяснение того, как работает стек WSGI и как все идет вместе.
Другие советы
Я бы должен был сказать, что Apache / mod_wsgi, вероятно, является наиболее "управляемым" из настроек, которые я использовал.
nginx / fcgi - самый быстрый, но это немного доставляет головную боль.
Как вы думаете, какое промежуточное программное обеспечение вам нужно?Вполне возможно, что вам вообще не нужно включать какие-либо компоненты, подобные WSGI ‘middleware’.Вы вполне можете собрать свободную ‘псевдофрагментацию’ из автономных библиотек без необходимости вообще ‘оборачивать’ приложение промежуточным программным обеспечением.
(Лично я использую отдельную библиотеку чтения форм, уровень доступа к данным и механизм шаблонов, ни один из которых не знает друг о друге и не нуждается в том, чтобы начинать возиться с WSGI environ
.)
Мой совет - прочитать БОДРОСТЬ ДУХА в WSGI, в частности, в части, касающейся промежуточное программное обеспечение.Если у вас есть вопрос о чем-либо, в котором есть слова "standard" и "WSGI", ответ либо есть, либо вы задаете неправильный вопрос.
Если вам понравилось руководство по фреймворку "Сделай сам", упомянутое ранее, но вы хотите управлять этими вещами в конфигурационном файле, Вставить Развернуть это был бы очевидный ответ.(Это упоминается в руководстве, но только очень кратко, в самом последнем абзаце).
Кстати, это то, что использует Pylons framework (и Turbogears 2, который также построен на Pylons).
"это кажется слишком простым при работе с несколькими пакетами промежуточного программного обеспечения".
Насколько велико это число?
Вы не будете работать с сотнями или тысячами.
Это будет (а) небольшое число (менее дюжины) и (б) "правильный" порядок не является волшебным.
У каждой части промежуточного программного обеспечения будет очень, очень специфическая работа и очень специфические требования к тому, что должно предшествовать ей.
Это гораздо менее запутанно, чем вы предполагаете.