# HG changeset patch # User Jeff Hammel # Date 1394175145 28800 # Node ID caf763fc1c7df2963f867baed5a40526c103721e # Parent 4d9a2a2fb8c07d13b4c4de4f04e8a798eb83c72e front end more servers diff -r 4d9a2a2fb8c0 -r caf763fc1c7d setup.py --- a/setup.py Sat Mar 09 23:03:48 2013 -0800 +++ b/setup.py Thu Mar 06 22:52:25 2014 -0800 @@ -1,7 +1,7 @@ -from setuptools import setup, find_packages +from setuptools import setup import os -version = '0.1.1' +version = '0.1.2' # description try: @@ -10,12 +10,7 @@ except: description = '' -# dependencies dependencies = ['webob'] -try: - import json -except ImportError: - dependencies.append('simplejson') setup(name='wsgintegrate', version=version, @@ -24,7 +19,7 @@ classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers keywords='', author='Jeff Hammel', - author_email='jhammel@mozilla.com', + author_email='k0scist@gmail.com', url='http://k0s.org/', license='GPL', packages=['wsgintegrate'], diff -r 4d9a2a2fb8c0 -r caf763fc1c7d wsgintegrate/factory.py --- a/wsgintegrate/factory.py Sat Mar 09 23:03:48 2013 -0800 +++ b/wsgintegrate/factory.py Thu Mar 06 22:52:25 2014 -0800 @@ -25,7 +25,6 @@ except Exception, e: print >> sys.stderr, "Error reading '%s': %s" % (self.inifile, e) self.mtime = mtime - + app = self.load(self.main) return app(environ, start_response) - diff -r 4d9a2a2fb8c0 -r caf763fc1c7d wsgintegrate/main.py --- a/wsgintegrate/main.py Sat Mar 09 23:03:48 2013 -0800 +++ b/wsgintegrate/main.py Thu Mar 06 22:52:25 2014 -0800 @@ -1,20 +1,18 @@ #!/usr/bin/env python """ -command line entry point for wsgintegrate +command line interface for wsgintegrate. serves an application from a .ini file (really, a DAG) - -uses wsgiref, though could in theory make use of -other WSGI servers, if available (TODO) """ import sys from factory import WSGIfactory from optparse import OptionParser -from server import wsgiref +from server import servers def main(args=sys.argv[1:]): + """CLI""" # parse command line options usage = '%prog [options] config-file' @@ -33,6 +31,10 @@ parser.add_option('--print-ini', dest='print_ini', action='store_true', default=False, help='print .ini format of the configuration') + if len(servers) > 1: + parser.add_option('-s', '--server', dest='server', + choices=servers.keys(), default='wsgiref', + help="which WSGI server to use [Choices: {}]".format(', '.join(servers.keys()))) options, args = parser.parse_args(args) # check for single configuration file @@ -58,8 +60,11 @@ return # serve it - print 'http://localhost:%d/' % options.port - wsgiref(app=factory.load(), port=options.port) + server_name = getattr(options, 'server', 'wsgiref') + print ("Serving with {}".format(server_name)) + server = servers[server_name] + print ('http://localhost:%d/' % options.port) + server(app=factory.load(), port=options.port) if __name__ == '__main__': main() diff -r 4d9a2a2fb8c0 -r caf763fc1c7d wsgintegrate/server.py --- a/wsgintegrate/server.py Sat Mar 09 23:03:48 2013 -0800 +++ b/wsgintegrate/server.py Thu Mar 06 22:52:25 2014 -0800 @@ -4,10 +4,24 @@ from factory import WSGIfactory +__all__ = ['wsgiref', 'servers', 'paster'] + def wsgiref(app, host='0.0.0.0', port=80): from wsgiref import simple_server server = simple_server.make_server(host=host, port=int(port), app=app) server.serve_forever() +servers = {'wsgiref': wsgiref} + +try: + from paste import httpserver + def paste_server(app, host='0.0.0.0', port=80): + httpserver.serve(app, host=host, port=port) + servers['paste'] = paste_server +except ImportError: + print ("Not adding paste.httpserver; not installed") + def paster(global_conf, **kw): + """factory for paster""" return WSGIfactory(**kw) +