You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dcs/dcs/tests/requestHandler.py

46 lines
2.0 KiB

import socket
import struct
import threading
from loguru import logger
from dcs.tools.message_process import parse_request, check
from conf.config import global_var
class RequestHandler(threading.Thread):
def __init__(self, client_socket: 'socket.socket'):
super().__init__()
self.client_socket = client_socket
def run(self) -> None:
try:
while True:
try:
request_map = parse_request(self.client_socket)
except struct.error:
break
except Exception as e:
logger.error(f'[Error] {e.__class__.__name__}: {str(e)}')
break
if request_map['action'] == 'end':
logger.info(f"[REQUEST] end: communication over from {self.client_socket.getpeername()}!")
break
elif request_map['action'] == 'start':
logger.info(f"[REQUEST] start: communication begin from {self.client_socket.getpeername()}!")
elif request_map['action'] == 'crawl zhiwang':
chk_res = check(request_map)
if chk_res is None:
if request_map['cookie'] != 'god':
logger.warning("[ERROR] user info error!")
break
global_var.spider.add_task(request_map, self.client_socket)
elif request_map['action'] in ['report_free', 'login', 'register']:
global_var.up.add_request(request_map, self.client_socket)
else:
logger.error(f"no action {request_map['action']}!")
global_var.communicator.add_response('error', self.client_socket,
{request_map['action']: f"no action {request_map['action']}!"})
except Exception as e:
logger.error(f'[Error] {e.__class__.__name__}: {str(e)}')