Python Django : ssl.SSLEOFError: EOF произошла в нарушение протокола (_ssl.c:2427)
Traceback (most recent call last):
File "C:\Program Files\Python311\Lib\wsgiref\handlers.py", line 138, in run
self.finish_response()
File "C:\Users\ADMİN\AppData\Roaming\Python\Python311\site-packages\django\core\servers\basehttp.py", line 173, in finish_response
super().finish_response()
File "C:\Program Files\Python311\Lib\wsgiref\handlers.py", line 184, in finish_response
self.write(data)
File "C:\Program Files\Python311\Lib\wsgiref\handlers.py", line 292, in write
self._write(data)
File "C:\Program Files\Python311\Lib\wsgiref\handlers.py", line 466, in _write
result = self.stdout.write(data)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\socketserver.py", line 834, in write
self._sock.sendall(b)
File "C:\Program Files\Python311\Lib\ssl.py", line 1274, in sendall
v = self.send(byte_view[count:])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\ssl.py", line 1243, in send
return self._sslobj.write(data)
^^^^^^^^^^^^^^^^^^^^^^^^
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2427)
Привет друзья
Проблема, с которой я столкнулся, заключается в том, что ошибка SSL Error в слое python перехватывается и обрабатывается в слое Django. Вот в чем проблема: Мы разрабатываем проект в среде Python Django. Мы используем openssl для архитектуры runsslserver. Мы разработали продвинутую архитектуру логирования для этой ситуации. Однако, несмотря на приоритет middelware, мы не смогли поймать и залогировать эту ssl-ошибку. Заранее благодарю всех, у кого есть идеи или предложения по этому вопросу.
class SSLErrorMiddleware(MiddlewareMixin):
def __init__(self, get_response):
self.get_response = get_response
# İstek başladığında ve bittiğinde sinyalleri bağla
request_started.connect(self.log_request_start)
request_finished.connect(self.log_request_finish)
def __call__(self, request):
# Request processing
try:
response = self.get_response(request)
except ssl.SSLEOFError as e:
error_details = traceback.format_exc()
logger.error(f"SSL EOF Error at {request.path}: {str(e)} | Traceback: {error_details}")
return HttpResponse("SSL connection error occurred.", status=503)
except Exception as e:
logger.error(f"Unexpected error at {request.path}: {str(e)} | Traceback: {traceback.format_exc()}")
raise e
return response
@staticmethod
@receiver(request_started)
def log_request_start(sender, **kwargs):
logger.debug(f"Request started signal received.")
@staticmethod
@receiver(request_finished)
def log_request_finish(sender, **kwargs):
logger.debug(f"Request finished signal received.")
def get_error_details(self):
stack_trace = traceback.format_exc()
return f"Traceback: {stack_trace}"