mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	bpo-36345: Update wsgiref example (GH-12562)
Use literalinclude markup to include Tools/scripts/serve.py code. Tools/scripts/serve.py first argument on the command line is now optional.
This commit is contained in:
		
							parent
							
								
									6fa84bd12c
								
							
						
					
					
						commit
						2b7f93b99a
					
				
					 3 changed files with 9 additions and 31 deletions
				
			
		|  | @ -783,33 +783,7 @@ This is a working "Hello World" WSGI application:: | ||||||
|        httpd.serve_forever() |        httpd.serve_forever() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Example of a small wsgiref-based web server:: | Example of a WSGI application serving the current directory, accept optional | ||||||
|  | directory and port number (default: 8000) on the command line: | ||||||
| 
 | 
 | ||||||
|    # Takes a path to serve from and an optional port number (defaults to 8000), | .. literalinclude:: ../../Tools/scripts/serve.py | ||||||
|    # then tries to serve files.  Mime types are guessed from the file names, 404 |  | ||||||
|    # errors are raised if the file is not found. |  | ||||||
|    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, "rb")) |  | ||||||
|        else: |  | ||||||
|            respond('404 Not Found', [('Content-Type', 'text/plain')]) |  | ||||||
|            return [b'not found'] |  | ||||||
| 
 |  | ||||||
|     path = sys.argv[1] |  | ||||||
|     port = int(sys.argv[2]) if len(sys.argv) > 2 else 8000 |  | ||||||
|     with simple_server.make_server('', port, app) as httpd: |  | ||||||
|         print("Serving {} on port {}, control-C to stop".format(path, port)) |  | ||||||
| 
 |  | ||||||
|         # Serve until process is killed |  | ||||||
|         httpd.serve_forever() |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1,3 @@ | ||||||
|  | Avoid the duplication of code from ``Tools/scripts/serve.py`` in using the | ||||||
|  | :rst:dir:`literalinclude` directive for the basic wsgiref-based web server in the | ||||||
|  | documentation of :mod:`wsgiref`.  Contributed by Stéphane Wirtel. | ||||||
|  | @ -25,11 +25,12 @@ def app(environ, respond): | ||||||
|         return [b'not found'] |         return [b'not found'] | ||||||
| 
 | 
 | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|     path = sys.argv[1] |     path = sys.argv[1] if len(sys.argv) > 1 else os.getcwd() | ||||||
|     port = int(sys.argv[2]) if len(sys.argv) > 2 else 8000 |     port = int(sys.argv[2]) if len(sys.argv) > 2 else 8000 | ||||||
|     httpd = simple_server.make_server('', port, app) |     httpd = simple_server.make_server('', port, app) | ||||||
|     print("Serving {} on port {}, control-C to stop".format(path, port)) |     print("Serving {} on port {}, control-C to stop".format(path, port)) | ||||||
|     try: |     try: | ||||||
|         httpd.serve_forever() |         httpd.serve_forever() | ||||||
|     except KeyboardInterrupt: |     except KeyboardInterrupt: | ||||||
|         print("\b\bShutting down.") |         print("Shutting down.") | ||||||
|  |         httpd.server_close() | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Stéphane Wirtel
						Stéphane Wirtel