Python向けの分散タスクキュー。バックグラウンドジョブの実行や、ワーカーとメッセージブローカーをまたいだ処理のスケジューリングに対応します。
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
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 とは?
- 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 の数値は毎日更新されます。
関連プロジェクト
バックグラウンドタスク、AIエージェント、永続ワークフローをオーケストレーションするエンジン。Python、TypeScript、Go、RubyのSDKを備え、永続化レイヤーにPostgresを採用。
リトライとフロー制御に対応し、サーバーレス、サーバー、エッジでステップ関数、バックグラウンドジョブ、AIワークフローを実行する耐久性の高いワークフローエンジン。
Temporalは、アプリケーションのWorkflowを実行し、失敗したステップを自動で再試行する耐障害性の高い実行プラットフォームです。
Stoatチャットプラットフォームを支えるRust製のバックエンドサービスとライブラリ。REST API、WebSocketイベントサーバー、ファイルサーバーなどを含みます。
リアルタイム通知、高度な検索に対応したデータストレージ、ユーザー管理を標準で備える、TypeScript製のオープンソース汎用バックエンド。