1*602Szelenkov@nginx.comimport atexit 2*602Szelenkov@nginx.com 3*602Szelenkov@nginx.comclass application: 4*602Szelenkov@nginx.com def __init__(self, environ, start_response): 5*602Szelenkov@nginx.com self.environ = environ 6*602Szelenkov@nginx.com self.start = start_response 7*602Szelenkov@nginx.com 8*602Szelenkov@nginx.com def __iter__(self): 9*602Szelenkov@nginx.com atexit.register(self._atexit) 10*602Szelenkov@nginx.com 11*602Szelenkov@nginx.com content_length = int(self.environ.get('CONTENT_LENGTH', 0)) 12*602Szelenkov@nginx.com body = bytes(self.environ['wsgi.input'].read(content_length)) 13*602Szelenkov@nginx.com 14*602Szelenkov@nginx.com self.start('200', [ 15*602Szelenkov@nginx.com ('Content-Type', self.environ.get('CONTENT_TYPE')), 16*602Szelenkov@nginx.com ('Content-Length', str(len(body))) 17*602Szelenkov@nginx.com ]) 18*602Szelenkov@nginx.com yield body 19*602Szelenkov@nginx.com 20*602Szelenkov@nginx.com def _atexit(self): 21*602Szelenkov@nginx.com self.start('200', [ 22*602Szelenkov@nginx.com ('Content-Length', '0') 23*602Szelenkov@nginx.com ]) 24