サーチ…


パラメーター

パラメータ詳細
start_response 開始を処理するために使用される関数

サーバーオブジェクト(メソッド)

私たちのサーバーオブジェクトには、アプリケーションパラメータが与えられています。このパラメータは、呼び出し可能なアプリケーションオブジェクトにすることができます(他の例を参照)。最初にヘッダーを書き込み、次にアプリケーションによって返されたデータ本体をシステム標準出力に書き込みます。

import os, sys    

def run(application):
    environ['wsgi.input']        = sys.stdin
    environ['wsgi.errors']       = sys.stderr

    headers_set = []
    headers_sent = []

    def write (data):
        """ 
        Writes header data from 'start_response()' as well as body data from 'response' 
        to system standard output. 
        """
        if not headers_set:
            raise AssertionError("write() before start_response()")

        elif not headers_sent:
            status, response_headers = headers_sent[:] = headers_set
            sys.stdout.write('Status: %s\r\n' % status)
            for header in response_headers:
                sys.stdout.write('%s: %s\r\n' % header)
            sys.stdout.write('\r\n')

        sys.stdout.write(data)
        sys.stdout.flush()

    def start_response(status, response_headers):
        """ Sets headers for the response returned by this server."""
        if headers_set:
            raise AssertionError("Headers already set!")

        headers_set[:] = [status, response_headers]
        return write

    # This is the most important piece of the 'server object'
    # Our result will be generated by the 'application' given to this method as a parameter
    result = application(environ, start_response)
    try:
        for data in result:
            if data:
                write(data)          # Body isn't empty send its data to 'write()'
        if not headers_sent:
            write('')                # Body is empty, send empty string to 'write()'


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow