Thanks - that's exactly what I was looking for. *But note* when using FileBodyProducer(StringIO(json.dumps(~blah))) -- I still see a content-length in the request header as it's received by twisted. Am I correct to assume the request is agnostic...meaning it's shaped the same for twisted as it is for apache.
Headers({'host': ['localhost:8080'], 'connection': ['close'], 'content-length': ['671'], 'user-agent': ['PassengerTest']}) from twisted.web import server, resource from twisted.internet import reactor class Simple(resource.Resource): isLeaf = True def render_POST(self, request): print request.requestHeaders return request.content.getvalue() site = server.Site(Simple()) reactor.listenTCP(8080, site) reactor.run() On Mon, Jan 30, 2017 at 4:59 PM, Jean-Paul Calderone < exar...@twistedmatrix.com> wrote: > On Mon, Jan 30, 2017 at 7:44 PM, Glyph Lefkowitz <gl...@twistedmatrix.com> > wrote: > >> Gotcha. I guess what I meant was that you shouldn't care about this at >> the application level, but you're talking about an operational concern, not >> an application-level concern. >> >> Perhaps this should be a tunable on Agent somehow. Can you file a ticket? >> > > > Well... It *is* sort of tuneable, as you implied earlier. > > If you pass an IBodyProducer with a non-None length, Agent will send a > Content-Length header - not use chunked Transfer-Encoding. > FileBodyProducer doesn't know how to determine the length of a StringIO, so > you get chunked with this example. If you write the JSON to a regular file > and FileBodyProducer(open(the file)) you'll get a Content-Length request. > You could also write a new (trivial) IBodyProducer that does know how to > compute the length of a StringIO. > > The documentation doesn't exactly spell this out - but the only reason > `length` is part of the interface is to be able to generate the > Content-Length header. > > What would the ticket be? Expanded documentation to make this behavior > into an explicit guarantee of the interface? A new toggle somewhere to > force Agent.request into one mode or the other (regardless of the > performance consequences)? > > And that stuff you said about proxies before was true ... So even if you > can control this in Agent, you're still not *guaranteed* the server will > see what you send. > > Jean-Paul > > > _______________________________________________ > Twisted-Python mailing list > Twisted-Python@twistedmatrix.com > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python > >
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python