Python 날짜 미세초 파싱과 무한 재시도 디버깅 기록
날짜 문자열의 미세초 형식 차이로 재시도가 멈추지 않을 때 확인한 Python 테스트와 수정 흐름을 기록합니다.
자동화 작업을 만들다 보면 실패 자체보다, 실패를 알아채지 못한 채 같은 처리를 반복하는 흐름이 더 까다로워요. 2026년 9월 29일 기록에는 데이터베이스가 잘라낸 미세초 표현을 Python 3.9가 읽지 못해 알림 처리 재시도가 계속되는 문제를 다룬 변경이 남아 있어요. 이 변경은 처리 스크립트 1개와 테스트 파일 1개, 모두 2개 파일에 걸쳐 반영됐어요.
날짜는 화면에서는 단순히 한 줄의 문자열처럼 보이지만, 처리기 입장에서는 형식 계약이에요. 미세초가 있거나 없을 수 있고, 저장 과정에서 자릿수가 달라질 수도 있어요. 코드를 직접 만들어 보면 같은 시각처럼 보이는 두 문자열도 파서가 받는 방식에 따라 결과가 달라진다는 점을 확인할 수 있어요.
이번 기록에서 제가 중요하게 본 지점은 “재시도”를 성공을 기다리는 만능 장치로 두지 않는 것이었어요. 테스트해 보면 파싱 실패는 외부 연결이 잠시 끊긴 상황과 성격이 달라요. 입력 형식이 지원 범위 밖이라면, 같은 값을 다시 읽는다고 결과가 바뀌지 않을 수 있어요. 그래서 실패 원인을 구분하고, 형식 처리 자체를 테스트로 고정하는 편이 안전해요.
재현용 값을 직접 작성해 보면 확인 순서는 3단계로 정리돼요. 첫째, 실제로 들어온 날짜 문자열의 미세초 유무를 확인해요. 둘째, 파서가 허용하는 형식과 비교해요. 셋째, 실패가 반복될 때 같은 입력이 다시 들어오는지 테스트로 검증해요. 값을 넣어 돌려 보면 재시도 횟수만 늘어나는 흐름과 형식 보정 후 다음 단계로 넘어가는 흐름을 분리해서 볼 수 있어요.
라이프케어로그처럼 여러 작은 서비스를 운영할 때는 이런 경계 조건이 눈에 잘 띄지 않아요. 플랜비(plan-b)의 운영 기록처럼 반복해서 쌓이는 데이터가 있는 제품일수록, 날짜·금액·상태값의 입력 계약을 테스트로 남기는 습관이 도움이 돼요. 이번 5개 커밋 중 한 건도 결국 화려한 기능보다, 멈추지 않는 처리 흐름을 어떻게 읽고 고칠지에 가까운 빌드로그였어요.
관련 글
댓글
아직 댓글이 없어요. 첫 댓글을 남겨주세요.