update
This commit is contained in:
@@ -78,7 +78,8 @@ class RequestHandler:
|
||||
def _has_body(self, headers):
|
||||
return "transfer-encoding" in headers or "content-encoding" in headers
|
||||
|
||||
def _get_date(self):
|
||||
@staticmethod
|
||||
def _get_date():
|
||||
now = datetime.now()
|
||||
stamp = mktime(now.timetuple())
|
||||
return format_date_time(stamp)
|
||||
@@ -114,3 +115,13 @@ class RequestHandler:
|
||||
|
||||
logging.debug("Sending: %r", message)
|
||||
self.conn.conn.sendall(message)
|
||||
|
||||
@staticmethod
|
||||
def send_error(client: socket, code, message):
|
||||
message = f"HTTP/1.1 {code} {message}\r\n"
|
||||
message += RequestHandler._get_date() + "\r\n"
|
||||
message += "Content-Length: 0\r\n"
|
||||
message += "\r\n"
|
||||
|
||||
logging.debug("Sending: %r", message)
|
||||
client.sendall(message.encode(FORMAT))
|
||||
|
@@ -1,10 +1,10 @@
|
||||
import logging
|
||||
import multiprocessing as mp
|
||||
import socket
|
||||
import threading
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from logging import Logger
|
||||
import socket
|
||||
|
||||
from httplib.exceptions import HTTPServerException, InternalServerError
|
||||
from server.RequestHandler import RequestHandler
|
||||
|
||||
THREAD_LIMIT = 128
|
||||
@@ -23,10 +23,8 @@ def worker(address, name, logging_level, queue: mp.Queue, stop_event: mp.Event):
|
||||
|
||||
|
||||
class Worker:
|
||||
|
||||
host: str
|
||||
name: str
|
||||
logger: Logger
|
||||
queue: mp.Queue
|
||||
executor: ThreadPoolExecutor
|
||||
stop_event: mp.Event
|
||||
@@ -68,8 +66,11 @@ class Worker:
|
||||
|
||||
handler = RequestHandler(conn, self.host)
|
||||
handler.listen()
|
||||
except Exception:
|
||||
logging.debug("Internal error")
|
||||
except HTTPServerException as e:
|
||||
RequestHandler.send_error(conn, e.status_code, e.message)
|
||||
except Exception as e:
|
||||
RequestHandler.send_error(conn, InternalServerError.status_code, InternalServerError.message)
|
||||
logging.debug("Internal error", exc_info=e)
|
||||
|
||||
conn.shutdown(socket.SHUT_RDWR)
|
||||
conn.close()
|
||||
|
Reference in New Issue
Block a user