-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.py
46 lines (35 loc) · 1.39 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import logging
import argparse
from socketserver import TCPServer
from settings import settings
from Libs.ProxyHandler import ProxyHandler
logger = logging.getLogger(__name__)
def parse_args() -> argparse.Namespace:
"""Init args params"""
parser = argparse.ArgumentParser()
parser.add_argument('--log-level', default=settings.log_level,
help='Log level: DEBUG, INFO (by default), WARNING, ERROR, CRITICAL')
parser.add_argument('--host', default=settings.host,
help='Host name for listening')
parser.add_argument('--port', default=9001, type=int,
help='TCP port for listening')
args = parser.parse_args()
settings.log_level = args.log_level
settings.host = args.host
settings.port = args.port
return args
def main() -> None:
args = parse_args()
print(f'Settings: {settings}')
log_level = getattr(logging, args.log_level, logging.INFO)
logging.basicConfig(level=log_level,
format='[%(asctime)s]-[%(levelname)s:%(name)s]-[%(filename)s:%(lineno)d]: %(message)s')
logger.info(f'Start server: {settings.host}:{settings.port}')
server = TCPServer((settings.host, settings.port), ProxyHandler)
try:
server.serve_forever()
except KeyboardInterrupt:
logger.info('Exit...')
server.server_close()
if __name__ == '__main__':
main()