Repolode
hibiken

hibiken/asynq

Redisを基盤とする分散タスクキュー向けのGoライブラリ。スケジューリング、リトライ、優先度キュー、Web UIに対応。

スター
13,784
フォーク
991
未解決の Issue
293
最終コミット
3 日前

これは何?

Asynqは、タスクをキューに登録し、worker goroutineで非同期に処理するためのGoライブラリです。クライアントがタスクをRedisに登録すると、1つ以上のworkerサーバーがタスクを取得して並行実行するため、複数のマシンに処理を分散できます。

バックグラウンドジョブでよく必要とされる機能を備えています。スケジュール実行と定期実行、失敗したタスクのリトライ、workerのクラッシュ後のタスク復旧、重み付きおよび厳密な優先度キュー、uniqueオプションによる重複排除、タスクごとのタイムアウトと期限、タスクのバッチ化などに対応しています。ハンドラーには通常の関数やインターフェースを実装した型を使え、middlewareも利用できます。

運用向けの機能には、Prometheusメトリクス、高可用性を実現するRedis Sentinel対応、キューやタスクの確認・操作に使う独立したAsynqmon Web UI、asynqというコマンドラインツールがあります。Redis 4.0以上が必要で、一部のLuaスクリプトはRedis Clusterで動作しない場合があります。

主な機能

  • 01スケジュール実行、定期実行、遅延実行
  • 02workerのクラッシュ後にタスクを自動でリトライ・復旧
  • 03重み付きおよび厳密な優先度キュー
  • 04タスクの重複排除、タイムアウト、期限設定
  • 05連続する処理をバッチ化するタスク集約
  • 06Prometheusメトリクス、Redis Sentinel対応、Web UI、CLI

ユースケース

  • HTTPリクエストをブロックせずにメールや通知をバックグラウンドで送信する
  • 画像のリサイズやアップロード処理を別のworkerマシンで実行する
  • Goサービスでクリーンアップやレポート生成などの定期ジョブを実行する
  • Redisをブローカーとして、負荷の高い処理を複数のサーバーに分散する

クイックスタート

  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 とは?
Redisを基盤とする分散タスクキュー向けのGoライブラリ。スケジューリング、リトライ、優先度キュー、Web UIに対応。 Asynqは、タスクをキューに登録し、worker goroutineで非同期に処理するためのGoライブラリです。クライアントがタスクをRedisに登録すると、1つ以上のworkerサーバーがタスクを取得して並行実行するため、複数のマシンに処理を分散できます。
asynq は無料で使えますか?ライセンスは?
asynq は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
asynq は今もメンテナンスされていますか?
活発にメンテナンス中。asynq の最終コミットは 2026年10月19日 です。
asynq は何に使えますか?
HTTPリクエストをブロックせずにメールや通知をバックグラウンドで送信する 画像のリサイズやアップロード処理を別のworkerマシンで実行する Goサービスでクリーンアップやレポート生成などの定期ジョブを実行する Redisをブローカーとして、負荷の高い処理を複数のサーバーに分散する
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 の数値は毎日更新されます。

関連プロジェクト