From 198db6f0003935e5f900719fa0b848924b8921bb Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Fri, 4 Mar 2016 18:33:12 +0100 Subject: Project one until step 8 in the readme --- project1/proj1_s4498062/webserver.py | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'project1/proj1_s4498062/webserver.py') diff --git a/project1/proj1_s4498062/webserver.py b/project1/proj1_s4498062/webserver.py index e518810..a361d5b 100644 --- a/project1/proj1_s4498062/webserver.py +++ b/project1/proj1_s4498062/webserver.py @@ -1,18 +1,43 @@ 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("-a", "--address", type=str, default="localhost") - parser.add_argument("-p", "--port", type=int, default=8001) - parser.add_argument("-t", "--timeout", type=int, default=15) + parser.add_argument('-c', '--config', type=str, default='~/.webpy.ini', + help='configuration file') + parser.add_argument('-a', '--address', type=str, default='localhost', + help='address to listen on (default localhost)') + parser.add_argument('-p', '--port', type=int, default=80, + help='port to listen on (default 80)') + parser.add_argument('-t', '--timeout', type=int, default=15, + help='timeout for incoming connections (default 15)') + 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] %(process)d %(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 - server = webhttp.server.Server(args.address, args.port, args.timeout) + config = os.path.expanduser(os.path.expandvars(args.config)) + server = webhttp.server.Server(config=config, + address=args.address, port=args.port, timeout=args.timeout) try: server.run() except KeyboardInterrupt: -- cgit v1.2.3