stdlib.py

Python-standard reference servers for development use.

Imports

from __future__ import unicode_literals, print_function

from wsgiref.handlers import CGIHandler
from wsgiref.simple_server import make_server

Production Warning

We let people know it's a bad idea to use these in production.

if not __debug__:
	import warnings
	warnings.warn("Use of standard library reference servers in production is discouraged.", RuntimeWarning)

Server Adapters

Python-standard WSGI-HTTP server for testing purposes.

The additional work performed here is to match the default startup output of "waitress".

This is not a production quality interface and will be have badly under load.

def simple(application, host='127.0.0.1', port=8080):
	

Try to be handy as many terminals allow clicking links.

	print("serving on http://{0}:{1}".format(host, port))
	

Bind and launch the server; this is a blocking operation.

	make_server(host, int(port), application).serve_forever()

Python-standard WSGI-CGI server for testing purposes.

This is not a production quality interface and will behave badly under load. Python-as-CGI is not a very good way to deploy any application. (Startup/shutdown on every request is a PHP problem.) This can be useful as a diagnostic tool in development, however.

def cgi(application):
	
	if not __debug__:
		warnings.warn("Interactive debugging and other persistence-based processes will not work.")
	

Instantiate the handler and begin bridging the application.

	CGIHandler().run(application)

A specialized version of the reference WSGI-CGI server to adapt to Microsoft IIS quirks.

This is not a production quality interface and will behave badly under load.

def iiscgi(application):
	try:
		from wsgiref.handlers import IISCGIHandler
	except ImportError:
		print("Python 3.2 or newer is required.")
	
	if not __debug__:
		warnings.warn("Interactive debugging and other persistence-based processes will not work.")
	
	IISCGIHandler().run(application)