Когда использовать промежуточное программное обеспечение WSGI? - PullRequest
4 голосов
/ 05 сентября 2010

Я пишу маршрутизатор, который принимает путь запроса, сопоставляет его с регулярным выражением и вызывает обработчик WSGI, если регулярное выражение совпадает. Диктовка с соответствующими группами захвата добавляется в envrion. Это плохой стиль для модификации среды с помощью промежуточного программного обеспечения WSGI?

Но для этого ли было создано промежуточное программное обеспечение WSGI? Я только что прочитал Промежуточное ПО WSGI, считающееся вредным , и задаюсь вопросом, должен ли я переписать свой маршрутизатор, чтобы он больше не был промежуточным ПО. Приложение становится зависимым от моего промежуточного программного обеспечения, если оно использует требование захвата групп. С другой стороны, ни одно приложение не должно использовать этот дополнительный dict. Я мог бы также отказаться от извлечения параметров пути и сократить маршрутизатор до маршрутизации, но тогда каждое приложение должно повторно выполнить регулярное выражение во второй раз для извлечения параметров пути.

Так что же делать:

  • оставив как есть; с маршрутизацией, извлечением параметров пути и environ манипуляциями
  • делает маршрутизатор приложением WSGI и специфичными для текущей среды приложений WSGI-обработчиками
  • сокращает маршрутизатор до маршрутизации и извлекает повторное сопоставление во второй раз для извлечения параметров пути в приложении, к которому был направлен запрос

1 Ответ

4 голосов
/ 05 сентября 2010

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

В этом конкретном случае существует соглашение о том, как добавить эти захваченные значения в среду: wsgiorg.routing_args . Так что, хотя вы будете помещать ссылки на этот захват в свое приложение, это не совсем специальное сообщение.

(Хотя вы, безусловно, можете чрезмерно использовать промежуточное ПО, я считаю, что эта конкретная статья завышает ситуацию; промежуточное ПО может быть хорошей абстракцией для отдельного рассмотрения, реализации и тестирования различных частей приложения, даже если первоначально эти части были реализованы для единственная цель одного человека)

...