Skip to content

feat(core): HTTP 재시도/백오프 + 전송계층 에러분류 (opt-in)#41

Merged
ArcSolver merged 1 commit into
mainfrom
feat/core-http-resilience
Jun 4, 2026
Merged

feat(core): HTTP 재시도/백오프 + 전송계층 에러분류 (opt-in)#41
ArcSolver merged 1 commit into
mainfrom
feat/core-http-resilience

Conversation

@ArcSolver

Copy link
Copy Markdown
Owner

#36 머지로 stacked 베이스가 삭제돼 닫힌 #37을 대체(retry 커밋만 main 위로 리베이스).

  • _send() 단일 진입점 + 모든 동사에 retry 인자. Retry(429/503·전송오류 지수백오프+Retry-After) + NetworkError 분류.
  • 기본 동작 100% 무변경(retry 미지정 시 원본 httpx 그대로 — zotero의 except httpx.ConnectError 호환).

864 passed(+5) · ruff clean.

🤖 Generated with Claude Code

감사(전수 논증)의 최대 레버리지 코어 약점 상환 — 행복경로 전용이던 http 핫패스에
견고성 원시기능을 코어 한 곳에 도입. 20개+ 서비스로 복붙되던 429/일시오류 처리를
옵트인으로 흡수할 토대.

- _send() 단일 진입점으로 통합(_request_raw·get_text가 공유). 모든 동사에 retry 인자 추가.
- Retry(attempts, statuses=(429,503), backoff, respect_retry_after): 지수 백오프 + 응답
  Retry-After(delta-seconds) 우선 존중.
- NetworkError: 전송계층 실패(연결/타임아웃) 분류. 원본 httpx 예외를 __cause__로 보존.

핵심 설계: **기본값(retry 미지정)은 동작 완전 무변경** — 재시도 0회, 전송 예외는 원본 httpx
그대로 전파. zotero가 9곳에서 쓰는 `except httpx.ConnectError`를 깨지 않기 위해 래핑·재시도를
모두 opt-in으로 둠. 서비스는 필요 시 retry=Retry(...)로 점진 채택.

864 passed(신규 5: 503 복구·Retry-After 존중·소진 시 UpstreamError·전송오류→NetworkError·
기본 무재시도 raw httpx 전파) · ruff clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ArcSolver ArcSolver merged commit ca01254 into main Jun 4, 2026
3 checks passed
@ArcSolver ArcSolver deleted the feat/core-http-resilience branch June 4, 2026 17:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant