By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,767 Members | 1,357 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,767 IT Pros & Developers. It's quick & easy.

BaseHTTPRequestHandler: how to read/write until diconnected

P: n/a

Hi,

I'm trying to write an server-application, using BaseHTTPServer/BaseHTTPRequestHandler.

When application is running, some client-application can post data to the server, and BaseHTTPRequestHandler reads all headers and posted raw data from "rfile", sends back response, than client/server session, than session closed - that works just fine.

how to check whether some data posted again by the client in the session, and send response again in one session (and do such iterations util client stops to post data) ?


something like this:

class ServerChannel( BaseHTTPServer.BaseHTTPRequestHandler ):

def do_POST(self):

while needReadMessage:
...
msg_count += 1
log.info( "message number %d arrived" % msg_count )
raw_post_data = self.rfile.read( contentLength )
...
self.wfile.write( respContent )
many thanks for help.
--
Maksim Kasimov
Jul 13 '06 #1
Share this Question
Share on Google+
1 Reply


P: n/a

Maksim Kasimov wrote:
I'm trying to write an server-application, using BaseHTTPServer/BaseHTTPRequestHandler.

When application is running, some client-application can post data to the server, and BaseHTTPRequestHandler reads all headers and posted raw data from "rfile", sends back response, than client/server session, than session closed - that works just fine.

how to check whether some data posted again by the client in the session, and send response again in one session (and do such iterations util client stops to post data) ?
BaseHTTPServer is precisely that, a HTTP server. what you are
describing is not (I'm pretty sure) not HTTP.
HTTP/1.1 can do something similar and is supported by BaseHTTPServer:
with HTTP/1.1 the stream is not closed between requests. This relies on
a Content-Length field being present in all communications from the
server to the client. To enable HTTP/1.1 you have to set the
protocol_version attribute of your BaseHTTPRequestHandler derived class
to "HTTP/1.1" .

A little while back I wrote a small guide to HTTP in the context of
BaseHTTPServer: http://crunchy.python-hosting.com/wiki/HttpServer

If (as I think) you want to send multiple, inter-dependent messages
each way under the aegis of one HTTP request, you should probably look
at sublassing TCPServer (you can, and probably should, still use
mimetools.Message to parse headers though).

Jul 13 '06 #2

This discussion thread is closed

Replies have been disabled for this discussion.