Hinzufügen einer Middleware, die nur die HTTP-Header (wie FirePython) ändert, ist ziemlich einfach, aber wenn Sie webapp.WSGIApplication (environ, start_response) aufrufen ‚‘] anstelle eines iterable mit dem Körper:Wie fügt man zu AppEngine eine WSGI Middleware, die den Körper der Antwort ändert
def __call__(self, environ, start_response):
...
response.wsgi_write(start_response)
return ['']
response.wsgi_write ist eigentlich die Verantwortung, den Körper des Druckens:
def wsgi_write(self, start_response):
...
write = start_response('%d %s' % self.__status, self.__wsgi_headers)
write(body)
self.out.close()
Dies macht es schwierig, den Körper durch eine WSGI Middleware zu ändern. Normalerweise würde ich nur tun:
class Upperware:
def __init__(self, app):
self.wrapped_app = app
def __call__(self, environ, start_response):
for data in self.wrapped_app(environ, start_response):
return data.upper()
Aber das funktioniert nicht, da der Rückgabewert von wrapped_app ist [ ‚‘]. Wie kann ich die Upperware-Middleware in Google AppEngine einsetzen? Was ist die Design-Entscheidung, die dazu führt, die Antwort zu schreiben, anstatt sie zurückzugeben?
Danke für die Antwort. WRT den Fehlerbericht, getan http://code.google.com/p/googleappengine/issues/detail?id=4244 –