Graham Dumpleton ha scritto: > [...] >> The idea was to allow an application to change its mind about the >> headers until it had committed to writing data. That is, to allow >> the application to do error handling for as long as possible before >> the server has to do it. > > But once you have called start_response() you cant call it a second > time to change the values so how could the application change its > mind?
In my implementation of WSGI for nginx, start_response setups the headers on the request object, but calls ngx_http_send_header only when the first not empty string is yielded. This means that if an error occurs, the "old" headers are kept in the response (and sent to the client); nginx will simply change the status code to '500 INTERNAL ERROR'. A solution can be to copy the headers in a temporary request object, but I don't know if this is possible. Another solution is to setup the headers and call send_headers at the same time, but in this way it is no more possible to raise an exception when the application calls start_response with incorrect headers. If I'm right this is the solution used by Apache mod_wsgi. [...] Regards Manlio Perillo _______________________________________________ Web-SIG mailing list Web-SIG@python.org Web SIG: http://www.python.org/sigs/web-sig Unsubscribe: http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com