Merged revisions 78416,78430 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78416 | dirkjan.ochtman | 2010-02-23 23:12:11 -0500 (Tue, 23 Feb 2010) | 1 line

  Issue #8004: add a serve target to the Doc Makefile.
........
  r78430 | dirkjan.ochtman | 2010-02-24 12:06:31 -0500 (Wed, 24 Feb 2010) | 1 line

  Add some notes about Tools/scripts/serve.py.
........
This commit is contained in:
R. David Murray 2010-03-08 17:48:38 +00:00
parent 61605d7685
commit e821cb6f24
4 changed files with 39 additions and 0 deletions

31
Tools/scripts/serve.py Executable file
View file

@ -0,0 +1,31 @@
#!/usr/bin/env python
'''
Small wsgiref based web server. Takes a path to serve from and an
optional port number (defaults to 8000), then tries to serve files.
Mime types are guessed from the file names, 404 errors are thrown
if the file is not found. Used for the make serve target in Doc.
'''
import sys
import os
import mimetypes
from wsgiref import simple_server, util
def app(environ, respond):
fn = os.path.join(path, environ['PATH_INFO'][1:])
if '.' not in fn.split(os.path.sep)[-1]:
fn = os.path.join(fn, 'index.html')
type = mimetypes.guess_type(fn)[0]
if os.path.exists(fn):
respond('200 OK', [('Content-Type', type)])
return util.FileWrapper(open(fn))
else:
respond('404 Not Found', [('Content-Type', 'text/plain')])
return ['not found']
if __name__ == '__main__':
path = sys.argv[1]
port = int(sys.argv[2]) if len(sys.argv) > 2 else 8000
httpd = simple_server.make_server('', port, app)
httpd.serve_forever()