OSS探訪GitHubでログイン

Redis・Valkeyを使ってPythonのbackground jobをqueueとworkerへ分離する軽量task queue

OSS規模スコア 284.3OSS健全度 100
スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
10,693
主要言語
Python
ライセンス
BSD-2-Clause
リポジトリ最終更新
2026/10/03
ページ内ナビ

概要

RQ(Redis Queue)は、Pythonのfunction callをRedisまたはValkeyへqueueingし、独立したworker processでbackground jobとして実行するlibraryです。priority queue、retry、schedule、repeat、unique job、webhookなどを比較的小さなAPIで扱えます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

Python functionをqueueへ積み、workerでbackground実行する

Queue.enqueue()で通常のPython functionと引数をjobとしてRedis/Valkeyへ保存し、rq workerで独立したworkerが処理します。high/lowなど複数queueを並べてpriorityを付けることもできます。

出典:[2]

retry・schedule・repeat・unique job・webhookをqueue運用に追加する

失敗時のRetry、指定時刻やdelay後の実行、繰り返しjob、重複enqueueを抑えるunique job、完了・失敗時のwebhookを標準APIで構成できます。2.12ではcron job履歴を追跡するCronJobRegistryも追加されています。

出典:[2][4]

向いている用途

既存のRedisを使ってbackground処理を小さく始めたいPython backendに向く

mail送信、report生成、image処理などをrequest pathから切り離したいが、大規模なmessage broker構成は避けたい場合に向きます。既にRedis/Valkeyを運用しているserviceでは導入componentを増やさず始めやすい構成です。

出典:[2]

導入前の確認

2.12はPython 3.10以上、Redis 5+またはValkey 7.2+。pickleとworker方式を確認する

RQ 2.12はPython 3.10以上、Redis 5以上またはValkey 7.2以上を要求します。既定serializerはpickleで安全ではないため、信頼できるRedisだけを使い、必要ならJSONSerializer等へ切り替えます。productionではjob isolationやhard timeoutを持つWorker/SpawnWorkerを基本とし、SimpleWorkerは短時間jobで実測上必要な場合に限定してください。

出典:[2][3]

参考にした公式資料

  1. [1]rq/rq — GitHub repository(2026-10-06)
  2. [2]RQ 2.12 — README(2026-10-06)
  3. [3]RQ 2.12 — pyproject.toml(2026-10-06)
  4. [4]RQ 2.12 release(2026-10-06)
  5. [5]RQ BSD-2-Clause license(2026-10-06)
編集部からの補足

既存Redisを活かしてbackground jobを小さく始めたい場合に扱いやすい選択肢です。一方でdefault serializerのpickleとworker isolationは安全性に直結するため、信頼境界とworker方式を先に決めてください。

3ステップで試す

  1. 1

    RQ 2.12を導入する

    確認対象の安定版を固定して導入します。Python 3.10以上と、信頼できるRedis 5+またはValkey 7.2+が必要です。

    python -m pip install "rq==2.12"
  2. 2

    enqueueするjobを作る

    外部HTTP accessを使わない最小functionとenqueue scriptを作ります。Redis/Valkeyはlocalhostで起動している前提です。

    cat > tasks.py <<'PY' def add(x, y): return x + y PY cat > enqueue.py <<'PY' from redis import Redis from rq import Queue from tasks import add q = Queue(connection=Redis()) job = q.enqueue(add, 2, 3) print(job.id) PY
  3. 3

    workerを起動してjobを送る

    workerを起動後、別端末からjobをenqueueし、worker logで実行完了を確認します。default serializerはpickleなので、信頼できるRedisだけを使ってください。

    rq worker # 別端末で: python enqueue.py
公式READMEで確認

成長

成長の推移 · 直近30日

10,693 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • async
  • background-jobs
  • delayed-jobs
  • delayed-tasks
  • job-queue
  • python
  • redis
  • rq
  • task
  • task-queue
  • workers
Stars
10,693
Forks
1,503
Watchers
194
Open Issues
261
Contributors
316
所有者種別
Organization
主要言語
Python
ライセンス
BSD-2-Clause
リポジトリ最終更新
2026/10/03

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?
RQ 2.12とは?Python Redis Queueの特徴と注意点 | OSS探訪