\

Pythonベースの分散タスクキューツールであるCeleryを用いて、WebAPIへのリクエストに対応したタスクを非同期実行し、結果を確認する方法を紹介します。

Celeryとは

Celeryは、発行されるメッセージをキューによって管理し、タスクとして実行するためのツールです。Celeryはキューを介したメッセージのやりとりを抽象化しており、これによって簡単にアプリケーションに非同期的な振る舞いを組み込むことができます。

BrokerとBackend

メッセージキューを実装するためには、メッセージを格納、引き出しできるデータストアが必要となります。これを担当する要素をメッセージブローカーと呼び、Celeryでは Redis や RabbitMQ などを利用できます。タスクを実行する際にはキューからメッセージを引き出し、内容に従って処理を実行します。バックエンドは処理結果の保持を担当します。

サンプルコード

以下に、Celeryを用いて非同期タスクを実行するPythonのサンプルコードを示します。

from celery import Celery
import time

celery = Celery(__name__)
celery.conf.broker_url = 'redis://localhost:6379'
celery.conf.result_backend = 'redis://localhost:6379'

@celery.task(name='tasks.calc_bmi')
def calc_bmi(weight: float, height: float) -> float:
    time.sleep(10)
    bmi = weight / height ** 2
    return bmi

このコードでは、calc_bmiという名前のタスクを定義しています。このタスクは、体重と身長を引数に取り、BMIを計算して返します。

以上が、PythonとCeleryを用いて非同期タスクキューを取得する方法についての基本的な説明です。詳細な情報や具体的な使用例については、公式ドキュメントや関連資料を参照してください。.

投稿者 admin

コメントを残す

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