[Python-ideas] A more useful command-line wsgiref.simple_server?

Masklinn masklinn at masklinn.net
Wed Mar 28 13:37:56 CEST 2012


Currently, calling wsgiref.simple_server simply mounts the (bundled)
demo app.
I think that's a bit of a lost opportunity: as the community has mostly
standardized on a *.wsgi/wsgi.py script providing an `application` name
in its global namespace, it would be nice if wsgiref.simple_server could
take such a file as parameter and mount the application provided:
* This would allow testing that the script has no error without having
 to go through mounting it in e.g. mod_wsgi
* It would make trivial/test applications (e.g. dynamic responders to
 local JS) simpler to bootstrap as there would be no need for the
 half-dozen lines of wsgiref.simple_server bootstrapping and "hard"
 dependency on wsgiref,
 import wsgiref.simple_server
 def application(environ, start_response):
 'code'
 if __name__ == '__main__':
 httpd = make_server('', 8000, application)
 httpd.serve_forever()
 could become:
 def application(environ, start_response):
 'code'
Since wsgiref already supports `python -mwsgiref.simple_server`, the
change would be pretty simple:
* the first positional argument is the wsgi script
 if it is present it is `exec`'d, the `application` key is
 extracted from the locals and is mounted through make_server;
 if it is absent, then demo_app is mounted as before
* the second positional argument is the host, defaulting to ''
* the third positional argument is the port, defaulting to 8000
This way the current sanity test/"PHPInfo" demo app works as it did before,
but it becomes possible to very easily serve a WSGI script with almost no
overhead in the script itself.
Thoughts?


More information about the Python-ideas mailing list

AltStyle によって変換されたページ (->オリジナル) /