ホームページ > バックエンド開発 > Python チュートリアル > Celery を使用して分散タスク スケジューリングを実装する方法

Celery を使用して分散タスク スケジューリングを実装する方法

王林
リリース: 2023-08-02 08:53:18
オリジナル
1562 人が閲覧しました

Celery を使用して分散タスク スケジューリングを実装する方法

概要:
Celery は、Python で最もよく使用される分散タスク キュー ライブラリの 1 つで、非同期タスク スケジューリングの実装に使用できます。この記事では、Celery を使用して分散タスク スケジューリングを実装する方法を紹介し、コード例を添付します。

  1. Celery のインストールと構成

まず、Celery ライブラリをインストールする必要があります。 Celery は次のコマンドでインストールできます:

pip install celery
ログイン後にコピー

インストールが完了したら、Celery 構成ファイルを作成する必要があります。 celeryconfig.py という名前のファイルを作成し、次の内容を追加します。

broker_url = 'amqp://guest@localhost//'     # RabbitMQ服务器地址
result_backend = 'db+sqlite:///results.sqlite'   # 结果存储方式(使用SQLite数据库)
task_serializer = 'json'    # 任务序列化方式
result_serializer = 'json'  # 结果序列化方式
accept_content = ['json']   # 接受的内容类型
timezone = 'Asia/Shanghai'  # 时区设置
ログイン後にコピー
  1. Create Celery App

コードでは、Celery をインポートする必要があります。ライブラリを作成し、Celery アプリケーションを作成します。以下に例を示します。

from celery import Celery

app = Celery('mytasks', include=['mytasks.tasks'])
app.config_from_object('celeryconfig')
ログイン後にコピー

上記のコードでは、mytasks という名前の Celery アプリケーションを作成し、celeryconfig.py の構成を Celery アプリケーションに適用します。

  1. タスクの作成

次に、タスクを作成する必要があります。タスクは、個別の操作を実行できる独立した関数です。以下に例を示します。

# tasks.py
from mytasks import app

@app.task
def add(x, y):
    return x + y
ログイン後にコピー

上記のコードでは、2 つの数値の合計を計算する add という名前のタスクを定義しました。

  1. Celery Worker の開始

タスクの分散実行を有効にするには、タスクを処理するために 1 つ以上の Celery Worker を開始する必要があります。 Celery Worker は次のコマンドで起動できます:

celery -A mytasks worker --loglevel=info
ログイン後にコピー

起動が完了すると、Celery Worker はキュー内のタスクをリッスンして処理します。

  1. タスクの送信

他のコードでは、タスクを Celery キューに送信できます。例を次に示します。

# main.py
from mytasks.tasks import add

result = add.delay(4, 6)
print(result.get())
ログイン後にコピー

上記のコードでは、前に定義した add タスクをインポートし、lay メソッドを使用してタスクを送信します。 lay メソッドは AsyncResult オブジェクトを返します。get メソッドを呼び出すことでタスクの結果を取得できます。

  1. タスクの完了ステータスの監視

AsyncResult オブジェクトを使用して、タスクの実行ステータスを監視できます。以下に例を示します。

# main.py
from mytasks.tasks import add

result = add.delay(4, 6)
while not result.ready():
    print("Task is still running...")
    time.sleep(1)

print(result.get())
ログイン後にコピー

上記のコードでは、ループを通じてタスクの実行ステータスを監視します。 readyメソッドは、タスクが完了したかどうかを示すブール値を返します。

概要:
この記事では、Celery を使用して分散タスク スケジューリングを実装する方法を簡単に紹介します。 Celery をインストールして構成し、Celery アプリケーションを作成し、タスクを定義し、Celery ワーカーを起動し、タスクをキューに送信することで、分散タスク スケジューリングを実装できます。 Celery を使用するとタスクの実行効率が向上し、並列コンピューティングや非同期処理が必要な状況に適しています。

以上がCelery を使用して分散タスク スケジューリングを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート