#!/usr/bin/env python3 import argparse import logging import multiprocessing import socket import sys from server.httpserver import HTTPServer def main(): parser = argparse.ArgumentParser(description='HTTP Server') parser.add_argument("--verbose", "-v", action='count', default=0, help="Increase verbosity level of logging") parser.add_argument("--workers", "-w", help="The amount of worker processes. This is by default based on the number of cpu threads.", type=int) parser.add_argument("--port", "-p", help="The port to listen on", default=8000) arguments = parser.parse_args() logging_level = logging.ERROR - (10 * arguments.verbose) logging.basicConfig(level=logging_level, format="%(levelname)s:[SERVER] %(message)s") logging.debug("Arguments: %s", arguments) # Set workers if arguments.workers: workers = int(arguments.workers) else: workers = multiprocessing.cpu_count() # Set port if arguments.port: port = int(arguments.port) else: port = 8000 # Get hostname and address hostname = socket.gethostname() address = socket.gethostbyname(hostname) server = HTTPServer(address, port, workers, logging_level) server.start() try: if __name__ == '__main__': main() except Exception as e: print("[ABRT] Internal error: " + str(e), file=sys.stderr) logging.debug("Internal error", exc_info=e) sys.exit(70)