Django で Celery と Redis を統合して非同期タスク処理を実装する方法
はじめに:
Web アプリケーションには、次のような時間のかかるタスクがたくさんあります。電子メールの送信、画像の処理、レポートの生成などを行います。これらのタスクが同期的に処理されると、ユーザー エクスペリエンスに重大な影響を与えるため、非同期タスク処理システムを使用する必要があります。
Django は人気のある Python Web フレームワークであり、Celery は非同期タスク処理ソリューションを提供するオープンソースの分散タスク キュー システムです。非同期タスク処理を実装するには、Redis を Celery のメッセージ ブローカーとして使用する必要もあります。
この記事では、Django で Celery と Redis を統合し、非同期タスク処理を実現する方法を紹介します。以下、インストールと設定、タスクの作成、タスクの呼び出し、タスクの監視の4つのパートに分けて説明します。
1. インストール構成
Celery と Redis のインストール
pip コマンドを使用して Celery と Redis をインストールします:
pip install celery redis
Django 設定を構成する
Django プロジェクトの settings.py ファイルに次の構成を追加します。
# Celery配置 CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
ここでの構成では、メッセージ ブローカーおよび結果ストレージとして Redis を使用することを指定します。
Celery Worker を開始します
Django プロジェクトのルート ディレクトリに celery.py という名前のファイルを作成し、次の内容を追加します:
from celery import Celery import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings') app = Celery('project') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks()
機能は次のとおりです。 Celery インスタンスを作成し、Django プロジェクトの構成を読み込みます。
ターミナルで次のコマンドを実行して Celery Worker を起動します:
celery -A project worker --loglevel=info
2. タスクの作成
タスクを作成します。 py ファイル
Tasks.py という名前のファイルを Django プロジェクトのアプリ ディレクトリに作成し、次の内容を追加します:
from celery import shared_task @shared_task def add(x, y): return x + y
ここでは add という名前のタスクが定義されており、2 つのパラメーター x と y を受け取ります。そしてその合計を返します。
3. タスクの呼び出し
Celery タスクは、Django のビュー関数または他の場所で次の方法で呼び出すことができます:
from app.tasks import add result = add.delay(1, 2)
Delay() メソッドとパラメーターは次のとおりです。ここで使用されます。 add タスクを呼び出し、結果を result 変数に保存します。
4. タスクの監視
Django でのタスクの実行を監視するには、Celery が提供する Flower ツールを使用できます。次の手順でインストールして構成できます。
Flower のインストール
pip コマンドを使用して Flower をインストールします:
pip install flower
Start Flower
ターミナルで次のコマンドを実行して Flower を開始します:
celery flower --broker=redis://localhost:6379/0
概要:
上記の手順により、Django に Celery と Redis を統合して、非同期タスク処理を実装できます。 Web アプリケーションを開発する場合、非同期タスク処理はユーザー エクスペリエンスとシステム パフォーマンスを大幅に向上させることができるため、実際のプロジェクトで広範な応用価値があります。同時に、タスクの実行を監視することで、タスク処理の問題点を迅速に発見・解決し、システムの安定性と信頼性を確保します。
以上がCelery と Redis を Django に統合して非同期タスク処理を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。