Python용 분산 작업 큐로, 백그라운드 작업을 실행하고 워커와 메시지 브로커에 작업을 분배합니다.
hibiken/asynq
스케줄링, 재시도, 우선순위 큐와 웹 UI를 지원하는 Redis 기반 분산 작업 큐용 Go 라이브러리입니다.
- 스타
- 13,784
- 포크
- 991
- 열린 이슈
- 293
- 마지막 커밋
- 3일 전
어떤 프로젝트인가요?
Asynq는 작업을 큐에 넣고 worker goroutine으로 비동기 처리하는 Go 라이브러리입니다. 클라이언트는 작업을 Redis에 넣고, 하나 이상의 worker 서버가 작업을 가져와 동시에 실행하므로 여러 머신에 작업을 분산할 수 있습니다.
이 라이브러리는 예약 및 주기적 작업, 실패한 작업 재시도, worker 충돌 후 작업 복구, 가중치 및 엄격 우선순위 큐, unique 옵션을 통한 중복 방지, 작업별 timeout과 deadline, 작업을 batch로 묶기 등 일반적인 백그라운드 작업에 필요한 기능을 제공합니다. 핸들러는 일반 함수이거나 인터페이스를 구현하는 타입일 수 있으며, middleware도 지원합니다.
운영 도구로는 Prometheus 메트릭, 고가용성을 위한 Redis Sentinel 지원, 큐와 작업을 조회하고 제어하는 별도 Asynqmon 웹 UI, asynq라는 command line 도구가 있습니다. Redis 4.0 이상이 필요하며, 일부 Lua 스크립트는 Redis Cluster에서 작동하지 않을 수 있습니다.
핵심 기능
- 01예약, 주기 및 지연 작업 실행
- 02worker 충돌 후 작업 자동 재시도 및 복구
- 03가중치 및 엄격 우선순위 큐
- 04작업 중복 방지, timeout 및 deadline
- 05연속 작업을 batch로 묶기 위한 작업 집계
- 06Prometheus 메트릭, Redis Sentinel 지원, 웹 UI 및 CLI
활용 사례
- HTTP 요청을 지연시키지 않고 백그라운드에서 이메일이나 알림 전송
- 별도 worker 머신에서 이미지 크기 조정 또는 업로드 파일 처리
- Go 서비스에서 정리 작업이나 보고서 생성 같은 주기적 작업 실행
- Redis를 broker로 사용해 여러 서버에 무거운 작업 분산
빠른 시작
- 1
Go를 설치하고 Redis 서버(버전 4.0 이상)가 실행 중인지 확인합니다
- 2
Go 모듈에 Asynq 라이브러리를 설치합니다
go get -u github.com/hibiken/asynq - 3
태스크 패키지를 작성한 다음 Client로 태스크를 큐에 넣고 Server로 처리합니다
사용 전 알아둘 점
- 태스크를 저장하고 이동하려면 Redis 서버(버전 4.0 이상)가 필요합니다.
- 아직 v0.x 단계이므로 v1.0.0 이전에는 메이저 버전 변경 없이 공개 API가 바뀔 수 있습니다.
- 일부 Lua 스크립트는 Redis Cluster와 호환되지 않을 수 있습니다.
토픽
자주 묻는 질문
- asynq은(는) 무엇인가요?
- 스케줄링, 재시도, 우선순위 큐와 웹 UI를 지원하는 Redis 기반 분산 작업 큐용 Go 라이브러리입니다. Asynq는 작업을 큐에 넣고 worker goroutine으로 비동기 처리하는 Go 라이브러리입니다. 클라이언트는 작업을 Redis에 넣고, 하나 이상의 worker 서버가 작업을 가져와 동시에 실행하므로 여러 머신에 작업을 분산할 수 있습니다.
- asynq은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- asynq은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- asynq은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. asynq의 마지막 커밋은 2026년 10월 19일입니다.
- asynq은(는) 어디에 사용할 수 있나요?
- HTTP 요청을 지연시키지 않고 백그라운드에서 이메일이나 알림 전송 별도 worker 머신에서 이미지 크기 조정 또는 업로드 파일 처리 Go 서비스에서 정리 작업이나 보고서 생성 같은 주기적 작업 실행 Redis를 broker로 사용해 여러 서버에 무거운 작업 분산
- asynq는 어떻게 설치하나요?
- Go를 설치하고 Redis 서버(버전 4.0 이상)가 실행 중인지 확인합니다 Go 모듈에 Asynq 라이브러리를 설치합니다: go get -u github.com/hibiken/asynq 태스크 패키지를 작성한 다음 Client로 태스크를 큐에 넣고 Server로 처리합니다
- asynq은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/hibiken/asynq
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
Python, TypeScript, Go, Ruby SDK와 내구성 계층인 Postgres를 지원하는 백그라운드 작업, AI 에이전트 및 내구성 있는 워크플로 오케스트레이션 엔진입니다.
재시도와 흐름 제어를 지원하며 서버리스, 서버, 엣지에서 스텝 함수와 백그라운드 작업, AI 워크플로를 실행하는 내구성 있는 워크플로 엔진입니다.
Temporal은 애플리케이션 Workflow를 실행하고 실패한 단계를 자동으로 재시도하는 내구성 있는 실행 플랫폼입니다.
Stoat 채팅 플랫폼을 구동하는 Rust 백엔드 서비스와 라이브러리로, REST API, WebSocket 이벤트 서버, 파일 서버를 포함합니다.
실시간 알림, 고급 검색이 가능한 데이터 저장소, 사용자 관리를 기본 제공하는 오픈소스 TypeScript 범용 백엔드입니다.