Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/serve.py @ 71285:8bc9dbc61ba6 3.2
Issue #12326: document the recommended idiom for checking sys.platform on Unix systems.
Also, point to the various alternatives.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Sat, 09 Jul 2011 15:54:23 +0200 |
| parents | 71c4315d49f2 |
| children | fdf907708f49 |
| 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.") |
