Python Celery 非同期処理

Celeryで使われる brokerbackend の役割について解説します。

Brokerとは?

broker は、タスクキューを管理するためのメッセージブローカーの役割を果たします。タスクを送信したり、ワーカーがそのタスクを取得して処理するのに使用されます。Celeryは複数のメッセージブローカーをサポートしており、一般的には以下のものが使われます。

  • Redis: 高速でシンプルなキーバリューストア。
  • RabbitMQ: 高性能なメッセージブローカー。
  • Amazon SQS: AWSのキューベースのメッセージングサービス。

broker URLは、メッセージブローカーへの接続情報を含みます。例えば、redis://redis:6379/0 は、Redisサーバーがホスト redis 上でポート 6379 で動作し、データベースインデックス 0 を使用することを示しています。

app = Celery('tasks', broker='redis://redis:6379/0')

Backendとは?

backend は、タスクの結果を保存し、後で結果を取得するために使用されます。タスクが非同期に実行されると、その結果をどこかに保存しておく必要があります。これを行うのが結果バックエンドです。Celeryは以下のような結果バックエンドをサポートしています。

Redis: 結果を保存するのに適しています。
Database: SQLAlchemyやDjango ORMを使用してデータベースに結果を保存できます。
Amazon S3: S3バケットに結果を保存します。
RPC: リモートプロシージャコールのバックエンド。
backend URLは、結果バックエンドへの接続情報を含みます。例えば、redis://redis:6379/1 は、Redisサーバーがホスト redis 上でポート 6379 で動作し、データベースインデックス 1 を使用することを示しています。

app = Celery('tasks', broker='redis://redis:6379/0', backend='redis://redis:6379/1')

まとめ

  • Broker: タスクの送信と取得を管理するメッセージブローカー。
  • Backend: 非同期タスクの結果を保存するストレージシステム。

これらを適切に設定することで、Celeryを使用して非同期タスクを効率的に管理し、実行できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です