OSS探訪GitHubでログイン

brokerとworkerを分離してPythonのbackground taskを分散実行するtask queue

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

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

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

概要

CeleryはPython向けの分散task queueです。producerがbrokerへtask messageを送り、複数workerが非同期に処理します。RabbitMQ、Redis、Amazon SQSなどのtransport、複数のconcurrency pool、result backend、schedulerなどを組み合わせてbackground jobを運用できます。

特徴と向いている用途

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

主な特徴

broker経由でtaskをworkerへ配送し、処理系をapplicationから分離する

Celery applicationへtaskを登録し、RabbitMQ・Redis・Amazon SQS・Google Pub/Sub等のmessage transportを介してworkerへ配送します。worker/clientは接続障害時のretry機構を持ち、複数workerへ処理を分散できます。

出典:[2]

concurrency・result backend・schedulerをworkloadに合わせて選ぶ

prefork、Eventlet、gevent、solo等のconcurrency方式を選択でき、Redis、SQLAlchemy、Django ORM、Elasticsearch等をresult storeとして構成できます。定期taskはschedulerと組み合わせて実行できます。

出典:[2]

向いている用途

Web requestから重い処理を切り離すPython backendに向く

email送信、image処理、外部API連携、batch処理などをrequest/responseから切り離し、retry・queueing・worker scaleを別processとして管理したいserviceに適します。

出典:[2]

導入前の確認

5.6.3はPython 3.9以上。broker・result backend・worker poolを一体で運用設計する

Celery 5.6.3はPython 3.9以上を要求します。taskのdelivery semantics、retry、ack、result保存、worker concurrencyはbroker/backend/poolの組み合わせで変わるため、application codeだけでなく運用構成を固定して検証してください。5.6.3はDjango worker recursionやwarm shutdown等の修正を含みます。

出典:[3][4]

参考にした公式資料

  1. [1]celery/celery — GitHub repository(2026-10-06)
  2. [2]Celery 5.6.3 — README(2026-10-06)
  3. [3]Celery 5.6.3 — setup.py(2026-10-06)
  4. [4]Celery 5.6.3 release(2026-10-06)
  5. [5]Celery BSD-3-Clause license(2026-10-06)
編集部からの補足

background taskの実装だけでなく、broker・result backend・worker processの運用まで含めて一つのsystemとして設計する必要があります。小さなqueueから始め、retry/ack/idempotencyとworker停止時の挙動を先に確認すると導入しやすくなります。

3ステップで試す

  1. 1

    Celery 5.6.3を導入する

    確認対象の安定版を固定して導入します。Python 3.9以上と、localhostで利用できるRabbitMQが必要です。

    python -m pip install "celery==5.6.3"
  2. 2

    最小task applicationを作る

    公式READMEの最小applicationに沿って、RabbitMQ brokerへtaskを送れるmoduleを作ります。

    cat > tasks.py <<'PY' from celery import Celery app = Celery('hello', broker='amqp://guest@localhost//') @app.task def hello(): return 'hello world' PY
  3. 3

    workerを起動してtaskをenqueueする

    一方の端末でworkerを起動し、別端末からtaskを送信します。worker logでtaskが受信・実行されることを確認します。

    celery -A tasks worker --loglevel=INFO # 別端末で: python -c "from tasks import hello; print(hello.delay())"
公式READMEで確認

成長

成長の推移 · 直近30日

28,936 Stars

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

Built with

カテゴリとタグ

GitHubデータ

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

GitHub Topics

  • amqp
  • python
  • python-library
  • python3
  • queue-tasks
  • queue-workers
  • queued-jobs
  • redis
  • redis-queue
  • sqs
  • sqs-queue
  • task-manager
Stars
28,936
Forks
5,205
Watchers
450
Open Issues
737
Contributors
401
所有者種別
Organization
主要言語
Python
ライセンス
BSD-3-Clause
リポジトリ最終更新
2026/10/05

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

情報の誤りを報告

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

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