Exception을 처리하는 코드에 중복된 동작이 많아서 단순화가 필요했다. 따라서 아래의 과정을 통해 단순화했다.
기존 코드
# 기존 코드
try:
# 예외 발생 가능한 코드 영역
print("test")
except socket.error as e:
send_kafka_message(self, empty_dict)
self.logger.error(f":: Socket error occurred: {e}")
self.close_socket()
self.initialize_socket()
return None, meta
except Exception as e:
send_kafka_message(self, empty_dict)
self.logger.error(f":: An error occurred: {str(e)}")
return None, meta
수정 코드
# 수정 코드
try:
# 예외 발생 가능한 코드 영역
print("test")
except (socket.error, Exception) as e:
send_kafka_message(self, empty_dict)
error_message = f":: Socket error occurred: {e}" if isinstance(e, socket.error) else f":: An error occurred: {str(e)}"
self.logger.error(error_message)
if isinstance(e, socket.error):
self.close_socket()
self.initialize_socket()
return None, meta
이렇게 간략화된 코드는 먼저 소켓 오류(socket.error)와 일반적인 예외(Exception)를 모두 처리한다. 오류가 발생하면 'send_kafka_message' 함수(Broker로 카프카 메시지를 Send 하는 기능을 하는 함수)를 사용해 Kafka 메시지를 전송하고 로그를 남기며, 소켓 오류인 경우 소켓을 닫고 다시 초기화한다. 최종적으로 None과 meta를 반환한다.
※ 참고
initialize_socket
def initialize_socket(self):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.settimeout(1) # Set timeout to 1 second
try:
self.socket.connect((self.server_ip, self.server_port))
self.logger.info("Connection established successfully")
except socket.error as e:
self.logger.error(f"Socket error occurred during initialization: {e}")
close_socket
def close_socket(self):
try:
self.socket.close()
except socket.error as e:
self.logger.error(f"Error closing socket: {e}")
반응형
'개발 (Development) > Python' 카테고리의 다른 글
[Python] 패키지 설치 SSL Error 해결 (0) | 2025.01.05 |
---|---|
[Python] 데코레이터 (0) | 2024.04.17 |
[Python] List Comprehension (0) | 2024.04.17 |
[Python] 리눅스 환경에서 윈도우 환경으로 파일 저장 (SMB 프로토콜) (0) | 2024.04.12 |
[Python] 실행 시간 측정 (0) | 2024.04.02 |