Можно извлечь метод:
public int cmp(String txt, String otherTxt)
{
if ( txt == null )
return otjerTxt == null ? 0 : 1;
if ( otherTxt == null )
return 1;
return txt.compareToIgnoreCase(otherTxt);
}
public int compareTo(Metadata other) {
int result = cmp( name, other.name);
if ( result != 0 ) return result;
return cmp( value, other.value);
}
Мне нравится диаграмма из WSGI Яна Бикинга - серия трубок .
Не знаю, смогу ли я дать ответ, который вы ищете, но диаграмма, на которую вы ссылаетесь, показывает больше, чем просто wsgi. Слой wsgi заканчивается на второй строке диаграммы. После этого это зависит от приложения.
WSGI - это скорее определение интерфейса или контракт, который сводится к тому, чтобы каким-то образом вы предоставляли функцию, которая принимает словарь (среду), представляющую содержимое текущего запроса. и функцию, которую нужно вызвать, когда вы будете готовы начать ответ (start_response).
Для вызываемого вами метода start_response требуется код состояния HTTP ('200 OK') и список заголовков HTTP ([('content-type ',' text / html ')]).
def say_hello(envron={},start_response):
start_response('200 OK', [('content-type', 'text/html')])
return ["Hello from WSGI"]
Связывание вашего веб-сервера с вашим приложением wsgi зависит от вашего веб-сервера, и я думаю, что информация о том, как веб-сервер достигает словаря среды и обратного вызова для вашего кода для вызова, магия веб-сервера, о которой вам, вероятно, не нужно беспокоиться. И пока вы соблюдаете протокол, веб-сервер не Не нужно заботиться о том, как вы пришли к списку выходных данных, который составляет ваш ответ от вашего приложения.
Документация Вставить мне ОЧЕНЬ помогла. Вы можете найти это полезным. Кстати, Paste - это набор полезных вещей, которые помогут вам использовать WSGI. И документы очень полезны для понимания того, как использовать WSGI и, как следствие, Paste.
Я знаю, что вы просили диаграмму, извините. : (