Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/serve.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | fdf907708f49 |
| children |
| 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. |
|
80928
fdf907708f49
Issue #16714: use 'raise' exceptions, don't 'throw'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
63688
diff
changeset
|
5 Mime types are guessed from the file names, 404 errors are raised |
|
59478
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.") |
