Repolode
hibiken

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. 1

    Go를 설치하고 Redis 서버(버전 4.0 이상)가 실행 중인지 확인합니다

  2. 2

    Go 모듈에 Asynq 라이브러리를 설치합니다

    go get -u github.com/hibiken/asynq
  3. 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 통계는 매일 갱신됩니다.

관련 프로젝트