Best way to avoid chunked encoding in HTTP Resource response?

A straightforward use of a series of request.write()s with a request.finish() in the render_GET() method of a resource defaults to chunked encoding. I can avoid the chunked encoding by computing the entire response first using a StringIO (as shown below) and explicitly putting the "Content-Length" header in myself.
Is this the best (or recommended) way to create such a response?
Thx - Tom
=============
class myresource(Resource):
def render_GET(self, response): output = StringIO.StringIO() output.write("...") output.write("...") ...
data = output.getvalue() output.close()
# Write the response data. "content-length" suppresses chunked coding request.setHeader('content-length', len(data)) request.write(data) request.finish() return True

On Thu, Apr 19, 2012 at 15:37, Tom Sheffler tom.sheffler@gmail.com wrote:
Is this the best (or recommended) way to create such a response?
I don't think there's any need to close your StringIO. You can also use cStringIO.StringIO for better performance. And you can just return a string from your render_GET. So, like this (untested):
def render_GET(self, response): output = cStringIO.StringIO() output.write("...") output.write("...") return output.getvalue()
Ivan
participants (2)
-
Ivan Kozik
-
Tom Sheffler