annotate Tools/scripts/serve.py @ 70626:aa07c1237f4e

(Merge 3.2) Issue #12016: Reindent decoders of HK and JP codecs
author Victor Stinner <victor.stinner@haypocalc.com>
date Fri, 03 Jun 2011 23:34:32 +0200
parents 71c4315d49f2
children fdf907708f49
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59522
fcfe324663a6 convert shebang lines: python -> python3
Benjamin Peterson <benjamin@python.org>
parents: 59478
diff changeset
1 #!/usr/bin/env python3
59478
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
2 '''
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
3 Small wsgiref based web server. Takes a path to serve from and an
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
4 optional port number (defaults to 8000), then tries to serve files.
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
5 Mime types are guessed from the file names, 404 errors are thrown
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
6 if the file is not found. Used for the make serve target in Doc.
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
7 '''
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
8 import sys
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
9 import os
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
10 import mimetypes
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
11 from wsgiref import simple_server, util
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
12
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
13 def app(environ, respond):
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
14
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
15 fn = os.path.join(path, environ['PATH_INFO'][1:])
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
16 if '.' not in fn.split(os.path.sep)[-1]:
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
17 fn = os.path.join(fn, 'index.html')
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
18 type = mimetypes.guess_type(fn)[0]
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
19
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
20 if os.path.exists(fn):
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
21 respond('200 OK', [('Content-Type', type)])
63688
71c4315d49f2 Issue #8867: Fix `Tools/scripts/serve.py` to work with files containing
Antoine Pitrou <solipsis@pitrou.net>
parents: 62005
diff changeset
22 return util.FileWrapper(open(fn, "rb"))
59478
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
23 else:
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
24 respond('404 Not Found', [('Content-Type', 'text/plain')])
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
25 return ['not found']
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
26
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
27 if __name__ == '__main__':
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
28 path = sys.argv[1]
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
29 port = int(sys.argv[2]) if len(sys.argv) > 2 else 8000
c870396b6ae1 Merged revisions 78416,78430 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
diff changeset
30 httpd = simple_server.make_server('', port, app)
62005
714653dd4aad Merged revisions 81587 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 61305
diff changeset
31 print("Serving {} on port {}, control-C to stop".format(path, port))
714653dd4aad Merged revisions 81587 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 61305
diff changeset
32 try:
714653dd4aad Merged revisions 81587 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 61305
diff changeset
33 httpd.serve_forever()
714653dd4aad Merged revisions 81587 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 61305
diff changeset
34 except KeyboardInterrupt:
714653dd4aad Merged revisions 81587 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 61305
diff changeset
35 print("\b\bShutting down.")