OSS探訪GitHubでログイン

actorとworkerでPythonのbackground taskをRabbitMQ・Redisへ分離するtask processor

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

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

Stars
5,326
主要言語
Python
ライセンス
LGPL-3.0-or-later
リポジトリ最終更新
2026/10/05
ページ内ナビ

概要

DramatiqはPython向けのdistributed task processing libraryです。Python functionをactorとして定義し、RabbitMQまたはRedis brokerへmessageを送信して、独立したworker processでbackground taskを実行します。

特徴と向いている用途

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

主な特徴

Python functionをactorとして定義し、messageをworkerへ送る

@dramatiq.actorでfunctionをtaskとして登録し、.send()でbrokerへmessageをenqueueします。workerはmoduleを読み込んでactor messageを処理するため、Web applicationのrequest processから重い処理を分離できます。

出典:[2]

RabbitMQまたはRedisをbrokerとして選び、worker processを独立運用する

公式package extraとしてRabbitMQとRedis brokerを提供し、CLIのdramatiq moduleでworkerを起動します。watch extraを使えばdevelopment中のfile changeに合わせたworker reloadも追加できます。

出典:[2][3]

向いている用途

Celeryより小さなtask-processing surfaceを求めるPython backendに向く

background jobをbrokerとworkerへ分離したい一方、task queueの中心APIをactor/message/workerへ絞って扱いたいserviceに適します。RabbitMQまたはRedisを既存infraとして利用する構成とも合わせやすいです。

出典:[2]

導入前の確認

2.2.1はPython 3.10以上。broker障害とasync actorのerror pathを検証する

Dramatiq 2.2.1はPython 3.10以上を要求します。brokerは別processとして必要で、deliveryやretryを含むfailure behaviorは実際のRabbitMQ/Redis構成で確認してください。2.2.1ではasync actor exceptionのreference cycle防止とRabbitMQ server shutdown時のlogging改善が入っています。

出典:[3][4]

参考にした公式資料

  1. [1]Bogdanp/dramatiq — GitHub repository(2026-10-06)
  2. [2]Dramatiq 2.2.1 — README(2026-10-06)
  3. [3]Dramatiq 2.2.1 — setup.py(2026-10-06)
  4. [4]Dramatiq 2.2.1 release(2026-10-06)
  5. [5]Dramatiq LGPL-3.0-or-later license(2026-10-06)
編集部からの補足

actor/message/workerという小さなmental modelでbackground処理を始めやすいのが特徴です。ただしbrokerは外部componentなので、worker停止・再接続・retry・idempotencyを実環境で確認してから重要taskへ広げるのが安全です。

3ステップで試す

  1. 1

    Dramatiq 2.2.1とRabbitMQ対応を導入する

    確認対象の安定版とRabbitMQ broker依存を固定して導入します。Python 3.10以上とlocalhostのRabbitMQが必要です。

    python -m pip install "dramatiq[rabbitmq]==2.2.1"
  2. 2

    最小actorを作る

    公式Quickstartと同じactor/message構成で、外部HTTP accessを必要としない最小taskを作ります。

    cat > example.py <<'PY' import dramatiq @dramatiq.actor def add(x, y): print(f'{x} + {y} = {x + y}') if __name__ == '__main__': add.send(2, 3) PY
  3. 3

    workerを起動してmessageを送る

    workerを起動した状態で別端末からmessageをenqueueし、worker logに2 + 3 = 5が表示されることを確認します。

    dramatiq example # 別端末で: python example.py
公式READMEで確認

成長

成長の推移 · 直近30日

5,326 Stars

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

Built with

カテゴリとタグ

GitHubデータ

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

GitHub Topics

  • distributed-lock
  • python
  • rabbit
  • redis
  • task
  • task-manager
  • task-runner
  • task-scheduler
Stars
5,326
Forks
384
Watchers
58
Open Issues
67
Contributors
118
所有者種別
User
主要言語
Python
ライセンス
LGPL-3.0-or-later
リポジトリ最終更新
2026/10/05

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

情報の誤りを報告

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

このページを読んで、次に何をすればよいか分かりましたか?