cn-py-serv/server/main.py

37 lines
1.1 KiB
Python
Raw Permalink Normal View History

2023-12-29 02:13:10 +03:00
import threading
2023-12-22 02:48:34 +03:00
import socket
import logging
import os
2023-12-22 02:48:34 +03:00
2023-12-29 02:13:10 +03:00
import config
from .http_handler import HTTPHandler
2023-12-22 02:48:34 +03:00
log = logging.getLogger(__name__)
2023-12-22 02:48:34 +03:00
def init_server_socket(server_handler):
assert server_handler == HTTPHandler, "Server handler isn't Handler type"
2023-12-29 02:13:10 +03:00
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as main_server_socket:
log.debug("Set socket option REUSEADDR to True")
2023-12-29 02:13:10 +03:00
main_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
log.info("Attempt to bind socket to 0.0.0.0:%d", config.SETUP["server"]["port"])
2023-12-29 02:13:10 +03:00
main_server_socket.bind(("0.0.0.0", config.SETUP["server"]["port"]))
log.debug("Make socket to listen")
2023-12-29 02:13:10 +03:00
main_server_socket.listen()
while True:
conn, addr = main_server_socket.accept()
log.info("Accept connection from %s", addr[0])
2023-12-22 02:48:34 +03:00
thr_serv_conn = threading.Thread(target=server_handler, args=(conn, addr,), daemon=True)
thr_serv_conn.start()
2023-12-22 02:48:34 +03:00
2023-12-29 02:13:10 +03:00
except KeyboardInterrupt:
log.info("Server get keyboard interrupt, bye!")