이미지를 수백 장 병렬 생성할 때 병렬 수·재시도·백오프·보고 주기를 정해 오케스트레이션 스크립트를 만들거나 지시문을 쓴다. "이미지 병렬로 뽑아줘", "대량 이미지 생성", "배치 이미지", "32장 병렬", "이미지 대량 생성 스크립트" 요청에 쓴다.
Install
npx skillscat add lsi9923/threads-skills-archive/batch-image-gen-orchestrator Install via the SkillsCat registry.
SKILL.md
배치 이미지 생성 오케스트레이터
언제 쓰나
이미지를 수십~수백 장 뽑아야 할 때. 하나씩 순차로 돌리면 몇 시간이 걸린다.
지시문 골격 (그대로 복사해서 쓴다)
[도구]를 이용해서 병렬로 이미지를 생성해라.
- 동시 요청: 최대 [N]장 (기본 16, 상한 32)
- 방식: asyncio(또는 동등한 비동기 I/O)로 진짜 병렬. 순차 루프 금지.
- 재시도: 실패 시 지수 백오프(1s → 2s → 4s → 8s → 16s), 최대 5회
- 최종 실패: 5회 모두 실패하면 그 항목만 실패로 기록하고 계속 진행
- 중단 금지: 한 항목 실패로 전체를 멈추지 않는다
- 보고: [M]분마다 진행률(성공/실패/남음) 출력
- 저장: [경로]/[명명규칙]. 실패 목록은 [경로]/failed.json구현 시 반드시 지킬 것
- 세마포어로 동시 수를 제한한다. 무제한 병렬은 API 레이트리밋에 걸려 전부 실패한다.
sem = asyncio.Semaphore(16) async def one(item): async with sem: ... - 실패는 항목 단위로 격리한다.
try/except를 항목마다 두른다.gather에 예외가 터지면 전체가 죽는다. - 부분 결과를 즉시 저장한다. 끝나고 한꺼번에 쓰면 중간에 죽었을 때 전부 날아간다.
- 재개 가능하게 만든다. 이미 있는 파일은 건너뛴다(멱등).
- 진행률을 flush 한다.
print(..., flush=True). 버퍼에 있으면 멈춘 것처럼 보인다.
체크리스트
- 동시 수 상한이 있는가
- 항목별 예외 격리가 있는가
- 이미 있는 파일을 건너뛰는가
- 실패 목록을 따로 남기는가
- 5회 재시도 후 실패로 확정하는가
출처: @bunniesossdev Threads 저장글 (god-tibo-imagen 병렬 생성)