BaseHTTPServer and do_POST method
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Wed Feb 27 14:23:31 EST 2008
En Wed, 27 Feb 2008 10:33:35 -0200, rocksportrocker
<rocksportrocker at googlemail.com> escribi�:
> Hi,
>
> I am trying to implement a local server for storing and retrieving
> numerical data.
> So I use BaseHTTPServer as follows:
>
> ---------------------------------------------------------
> from BaseHTTPServer import *
>
> class Handler(BaseHTTPRequestHandler):
>
> def do_POST(self):
>
> print "POST"
> self.send_response(200)
>
>
> httpd = HTTPServer(("",8000), Handler)
> httpd.serve_forever()
> ---------------------------------------------------------
>
> For testing I use:
>
> ---------------------------------------------------------
>
> import httplib
>
>
> data = "123456789o" * 100
>
> conn = httplib.HTTPConnection("localhost:8000")
> print conn.request("POST", "/", data)
>
> ---------------------------------------------------------------
>
> Executing this client, the server says:
>
> error(10053, 'Software caused connection abort')
>
> If I add "conn.getresponse()" at the end of the test script, the
> message disapears, but the server hangs.
If you don't add that line, the client process exits and drops the
connection, and the server detects that situation when it tries to send
the response to a dead socket.
The server "hangs" because you told it to "serve_forever"; it's waiting
for the next request. Use Ctrl-C to stop it.
You may find easier to use urllib or urllib2 to write the client.
--
Gabriel Genellina
More information about the Python-list
mailing list