ホームページ >バックエンド開発 >Python チュートリアル >Celery を使用して分散タスク スケジューリングを実装する方法
Celery を使用して分散タスク スケジューリングを実装する方法
概要:
Celery は、Python で最もよく使用される分散タスク キュー ライブラリの 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' # 时区设置
コードでは、Celery をインポートする必要があります。ライブラリを作成し、Celery アプリケーションを作成します。以下に例を示します。
from celery import Celery app = Celery('mytasks', include=['mytasks.tasks']) app.config_from_object('celeryconfig')
上記のコードでは、mytasks
という名前の Celery アプリケーションを作成し、celeryconfig.py
の構成を Celery アプリケーションに適用します。
次に、タスクを作成する必要があります。タスクは、個別の操作を実行できる独立した関数です。以下に例を示します。
# tasks.py from mytasks import app @app.task def add(x, y): return x + y
上記のコードでは、2 つの数値の合計を計算する add
という名前のタスクを定義しました。
タスクの分散実行を有効にするには、タスクを処理するために 1 つ以上の Celery Worker を開始する必要があります。 Celery Worker は次のコマンドで起動できます:
celery -A mytasks worker --loglevel=info
起動が完了すると、Celery Worker はキュー内のタスクをリッスンして処理します。
他のコードでは、タスクを Celery キューに送信できます。例を次に示します。
# main.py from mytasks.tasks import add result = add.delay(4, 6) print(result.get())
上記のコードでは、前に定義した add
タスクをインポートし、lay
メソッドを使用してタスクを送信します。 lay
メソッドは AsyncResult
オブジェクトを返します。get
メソッドを呼び出すことでタスクの結果を取得できます。
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 サイトの他の関連記事を参照してください。