import argparse import logging import os.path import sys import webhttp.server import webhttp.weblogging # Create and start the HTTP Server # Use `python webserver.py --help` to display command line options if __name__ == '__main__': # Parse command line arguments parser = argparse.ArgumentParser(description="HTTP Server") parser.add_argument('-c', '--config', type=str, default='~/.webpy.ini', help='configuration file') parser.add_argument('-a', '--address', type=str, default=None, help='address to listen on (default localhost)') parser.add_argument('-p', '--port', type=int, default=None, help='port to listen on (no default)') parser.add_argument('-t', '--timeout', type=int, default=None, help='timeout for incoming connections (no default)') parser.add_argument('-l', '--log', type=str, default='info', help='log level (debug, info, warning, error, critical)') parser.add_argument('-lf', '--log-file', type=str, default=None, help='log file (default stdout)') args = parser.parse_args() # Logging fmt = '[%(asctime)s] %(levelname)s %(message)s' logging.basicConfig(format=fmt, level=getattr(logging, args.log.upper())) if args.log_file != None: logger = logging.getLogger(webhttp.weblogging.name) handler = logging.FileHandler(args.log_file) handler.setLevel(getattr(logging, args.log.upper())) logger.addHandler(handler) # Start server config = os.path.expanduser(os.path.expandvars(args.config)) server = webhttp.server.Server(configfile=config, hostname=args.address, port=args.port, timeout=args.timeout) try: server.run() except KeyboardInterrupt: server.shutdown() print ("")