[Tutor] Single line webserver [was: Tutor Digest, Vol 93, Issue 38]

Steven D'Aprano steve at pearwood.info
Tue Nov 8 18:07:45 CET 2011

Rich Lovely wrote:

> I'd like to draw your attention to my original message: "a google
> search is similarly lacking in relevant results."  Shouldn't it be
> clear from how easy it is to find SimpleHttp that it clearly /isn't/
> what I'm looking for? Perhaps I should have mentioned that, but I
> thought I'd made it clear I'd tried a websearch.

Yes, you should have mentioned that SimpleHttp was not the one-liner you 
were looking for. That would have been useful to know :)

Your request was for a one-liner web server, and you claimed to have 
done a search which came up with nothing relevant. Since a simple search 
did in fact come up with an apparently relevant one-liner, the most 
obvious conclusions were that your search skills are very lousy, or that 
you were mistaken (i.e. lying) about having attempted to search first. 
Coming from an apparent first-time poster with no reputation I was aware 
of, neither would have surprised me. I'm glad that neither is actually 
the case.

> The code I remember was a Socket-based webserver, written in one -
> albeit rather long - line.

That would have been useful information to have mentioned at the time.

For what little it's worth, here's a 15 line socket-based web server:

import socket
template = ('HTTP/1.0 200 OK\n\n<html><head><title>Welcome %s!</title>'
   '</head><body><h1>Header...</h1>...and body.<br>Your request was: '
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', 8080))
print "Listening on port 8080"
while True:
     client, address = sock.accept()
     cfile = client.makefile('rw', 0)
     cfile.write(template % (str(address), cfile.readline().strip()))

Save this as "web.py", run "python web.py", and then in your browser go 
to http://localhost:8080

Turning this into a one-liner is left as an exercise. This may be useful:


P.S. I note you're replying to the digest. Thank you for trimming your 
reply, rather than including the entire digest, but please note the 
request at the top of each digest:

     When replying, please edit your Subject line so it is
     more specific than "Re: Contents of Tutor digest..."


More information about the Tutor mailing list