50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
#!/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=5055)
|
|
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)
|