In WSGI, send response without returning

2019-07-20 13:40发布

问题:

Is there any way to wrap a WSGI application method such the server will send a response when a particular method is called, rather than when the application method returns a sequence?

Basically, I'd like to have the equivalent of a finish_response(responseValue) method.

回答1:

WSGI app must return an iterable, one way or another. If you want to send partial responses, turn your application into a generator (or return an iterator):

import wsgiref, wsgiref.simple_server, time

def app(environ, start):
    start('200 OK', [('Content-Type', 'text/plain')])

    yield 'hello '
    time.sleep(10)
    yield 'world'

httpd = wsgiref.simple_server.make_server('localhost', 8999, app)
httpd.serve_forever()


标签: python wsgi