하나의 논리적 작업을 식별하고 안전하게 재시도할 수 있도록 만들어 Home Assistant 작업이 중복 실행되지 않게 하세요. 먼저 두 번째 실행이 어디서 시작되는지 입증한 다음, 가장 좁은 계층에서 동시 실행, 중복 전달, 재시도 및 다중 인스턴스 실행을 제어하세요.
알림이 반복되면 성가시지만, 문 작동, 결제, 관개, 백업 또는 가져오기 작업이 중복되면 피해가 발생할 수 있습니다. 지연을 추가하기 전에 자동화 추적 정보, 트리거 ID, 타임스탬프, 작업 입력값 및 서버 식별자를 수집하세요. 중복 방지 설계는 동일한 작업 키를 거부하고, 실제로 새로운 이벤트는 허용하며, 첫 시도가 중간에 실패해도 깔끔하게 복구할 수 있어야 합니다.
중복이 시작되는 정확한 지점 찾기
두 실행의 자동화 추적 정보 또는 작업 로그를 비교하세요. 트리거 플랫폼, 트리거 ID, 컨텍스트, 타임스탬프, 입력 페이로드, 실행 모드, 재시도 횟수 및 서버 식별자를 기록하세요. 두 추적 정보의 트리거가 서로 다르면 트리거 중복을 수정하고, 하나의 추적 정보에서 부수 효과가 두 번 수행되면 작업 또는 가져오기 루프를 수정하세요.
Home Assistant 커뮤니티의 문제 해결 사례에 따르면 자동화 모드와 타이밍으로 중복 실행을 제한할 수 있지만, 근본적인 트리거를 이해해야 한다는 점도 강조합니다. 중복 실행 추적 패턴은 보편적인 지연 설정법이 아니라 진단 방향으로 활용하세요.
작업을 담당하는 Home Assistant 인스턴스, 스케줄러, 가져오기 컨테이너 또는 웹훅 소비자가 하나뿐인지 확인하세요. 두 서버가 인증 정보나 큐를 공유한다면 한 인스턴스 내부의 자동화 모드만으로는 인스턴스 간 중복을 방지할 수 없습니다.
원인에 맞는 예방 경계 선택
하나의 자동화 내부에서 실행이 겹치는 경우 작업에 맞는 실행 모드를 선택하세요. 배타적 작업에는 중복 실행을 거부하는 모드를, 진정한 순차 작업에는 큐 모드를, 기존 실행을 대체해도 안전한 경우에만 재시작 모드를 사용하세요. 모두 처리해야 하는 서로 다른 이벤트를 모드 변경으로 합치지 마세요.
이벤트가 중복 전달되거나 재시도되는 경우 안정적인 이벤트 ID 또는 소스, 장치, 작업 및 시간 구간처럼 신중하게 선택한 조합으로 작업 키를 만드세요. 워크플로에 적합한 만료 시간을 적용해 헬퍼, 데이터베이스 테이블 또는 가져오기 매니페스트에 마지막으로 완료된 키를 저장하세요.
가져오기 작업에서는 가능하면 대상에서 고유성을 강제하세요. 기록하기 전에 소스 항목 ID를 확인하고 기록하며, 원자적으로 작성하고, 필요한 모든 부수 효과가 성공한 후에만 완료로 표시하세요. 동일한 데이터가 다른 이름으로 들어올 수 있다면 파일 이름만 사용하는 것은 취약합니다.
재시도를 비활성화하지 말고 안전하게 만들기
시간 초과가 발생했다고 해서 첫 시도가 실패했다는 뜻은 아닙니다. 응답이 유실되기 전에 원격 장치나 API가 작업을 완료했을 수 있습니다. 재시도하기 전에 결과 상태를 읽거나 대상에 작업 키가 있는지 조회하세요. 의도한 상태가 없을 때만 재시도하세요.
선점 단계와 작업 단계를 분리하세요. 하나의 작업자가 작업 키를 선점하고, 작업을 수행한 뒤 성공을 기록하며, 문서화된 규칙에 따라 실패한 선점을 해제하거나 만료시켜야 합니다. 이렇게 하면 두 개의 동시 컨테이너가 동일한 항목을 처리하는 것을 방지하면서도 충돌 후 복구할 수 있습니다.
변경 후 Home Assistant 백그라운드 작업에 대한 ZimaSpace의 설명은 중복처럼 보이지만 실제로는 서로 다른 단계에서 시작되는 다시 로드, 재처리 및 후속 작업을 식별하는 데 도움이 됩니다.
의존하기 전에 중복 방지를 테스트하기
동일한 이벤트를 두 번 재생하고, 짧은 간격으로 두 이벤트를 보내며, 작업 중 재시작하고, 대상이 커밋된 후 시간 초과를 시뮬레이션하고, 격리된 테스트 환경에서 두 번째 작업자를 잠시 실행하세요. 각각의 경우 결과는 하나의 완료된 부수 효과이거나, 둘 다 정당한 경우 명확하게 대기열에 추가된 두 번째 이벤트여야 합니다.
반대쪽 경계도 확인하세요. 실제로 서로 다른 두 이벤트가 하나의 작업 키로 합쳐져서는 안 됩니다. 추적 정보, 대상 기록, 장치 상태 및 멱등성 저장소를 확인하여 예방 규칙이 유효한 작업을 조용히 삭제하지 않는지 검증하세요.
이미 중복이 발생했다면 생산자를 일시 중지하고, 추적 정보와 대상 식별자를 보존하며, 되돌려도 안전한 부수 효과만 취소하고, 재생하기 전에 원인을 수정하세요. 중복 이벤트 ID를 생성하거나 문서화된 실행 의미를 무시하는 통합은 최소 재현 사례와 함께 에스컬레이션하세요.
지원 및 팁
더 읽어보기

동시 컨테이너 환경에서 Home Assistant 데이터베이스 연결을 최적화하는 방법
측정된 활성 연결 수와 지연 시간을 바탕으로 외부 Recorder 데이터베이스를 튜닝하세요. 최대 연결 수를 늘리거나 다른 호스트의 풀 설정을 그대로 복사해서는 안 됩니다.

데이터베이스 볼륨이 가득 찬 후 Home Assistant 복구 방법
먼저 증거를 삭제하지 않고 가득 찬 Recorder 볼륨을 복구한 다음, 증가량을 줄이고 재시작 후에도 기록과 자동화가 유지되는지 입증하세요.

Home Assistant는 왜 누락된 파일을 잘못된 소유자로 다시 생성하나요?
런타임 UID와 GID를 호스트 경로에 맞추고, 중지된 상태에서 영향을 받은 파일만 복구한 다음 재생성 후 소유권을 확인하세요.

