Советы по настройке / управлению стеком WSGI?

StackOverflow https://stackoverflow.com/questions/1633342

  •  06-07-2019
  •  | 
  •  

Вопрос

Просмотрев множество полезных и блестящих фреймворков 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).

"это кажется слишком простым при работе с несколькими пакетами промежуточного программного обеспечения".

Насколько велико это число?

Вы не будете работать с сотнями или тысячами.

Это будет (а) небольшое число (менее дюжины) и (б) "правильный" порядок не является волшебным.

У каждой части промежуточного программного обеспечения будет очень, очень специфическая работа и очень специфические требования к тому, что должно предшествовать ей.

Это гораздо менее запутанно, чем вы предполагаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top