작업 대상 선택과 진행률 계산: GUI 상태 모델 분리

진행률은 실제 완료한 작업 수를 기준으로 계산하고, 대상 선택과 실행 상태를 별도 데이터로 관리해야 합니다.

어떤 상황에서 적용하나요?

색인 완료를 알 수 없는 HTTP 요청을 처리했다고 표시하더라도 그것은 알림 작업의 진행률입니다. 아래는 네트워크와 GUI 없이 선택된 대상의 작업 완료율만 계산합니다.

검증 범위: 아래 코드는 외부 서비스에 요청하지 않는 로컬 예제입니다. 실제 서비스 연결은 별도로 검증해야 합니다.

최소 예제로 동작 확인하기

targets = {"site-a": True, "site-b": False, "site-c": True}
selected = [name for name, checked in targets.items() if checked]

def progress(completed, total):
    if total <= 0 or not 0 <= completed <= total:
        raise ValueError("작업 수를 확인하세요")
    return round(completed / total * 100)

assert selected == ["site-a", "site-c"]
assert progress(1, len(selected)) == 50
print(f"알림 작업 진행률: {progress(1, len(selected))}%")

결과는 어떻게 확인하나요?

두 대상 중 한 작업이 끝나면 50%입니다. 여기서 완료는 로컬 작업의 정의이며 실제 검색엔진 색인 상태를 뜻하지 않습니다. UI에도 “요청 처리”처럼 관찰한 작업을 정확히 표시하세요.

실제 업무에 적용할 때 확인할 점

작업 시작 후 대상 목록이 바뀌면 분모가 달라집니다. 실행 시점의 목록을 복사해 고정하고, 취소·실패 항목을 어떻게 집계할지 정해야 합니다. GUI 스레드에서 오래 걸리는 요청을 직접 실행하지 않습니다.

공식 자료와 다음 단계

관련 공식 문서에서 사용하는 버전의 기능과 제한을 확인하세요.

학습 경로: 업무 자동화 가이드 · 입력 오류 처리

작성: 로그 · 2026-10-17 수정: 확인되지 않은 경험담과 성능 보장 표현을 제거하고 예제·적용 조건·공식 근거를 보완했습니다.

댓글

이 블로그의 인기 게시물

API 키 저장 방법: 해싱과 암호화의 차이, Fernet 예제

파이썬 Google Sheets API 연동: 서비스 계정 권한과 읽기·쓰기

Pandas 결측치 처리: isna, fillna, dropna 선택 기준