May 2001
Intermediate to advanced
304 pages
6h 12m
English
This is a basic framework for HTTP servers, built on top of the
SocketServer framework.
Example 7-36 generates a random message each time you reload
the page. The path variable contains the current
URL, which you can use to generate different contents for different
URLs (as it stands, the script returns an error page for anything but
the root path).
Example 7-36. Using the BaseHTTPServer Module
File: basehttpserver-example-1.py
import BaseHTTPServer
import cgi, random, sys
MESSAGES = [
"That's as maybe, it's still a frog.",
"Albatross! Albatross! Albatross!",
"It's Wolfgang Amadeus Mozart.",
"A pink form from Reading.",
"Hello people, and welcome to 'It's a Tree.'"
"I simply stare at the brick and it goes to sleep.",
]
class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
if self.path != "/":
self.send_error(404, "File not found")
return
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
try:
# redirect stdout to client
stdout = sys.stdout
sys.stdout = self.wfile
self.makepage()
finally:
sys.stdout = stdout # restore
def makepage(self):
# generate a random message
tagline = random.choice(MESSAGES)
print "<html>"
print "<body>"
print "<p>Today's quote: "
print "<i>%s</i>" % cgi.escape(tagline)
print "</body>"
print "</html>"
PORT = 8000
httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
See the SimpleHTTPServer
and CGIHTTPServer modules for ...
Read now
Unlock full access