ホームページ  >  記事  >  バックエンド開発  >  Celery Redis Django を使用して、可用性の高い非同期タスク処理プラットフォームを作成する

Celery Redis Django を使用して、可用性の高い非同期タスク処理プラットフォームを作成する

王林
王林オリジナル
2023-09-26 12:29:021866ブラウズ

使用Celery Redis Django打造高可用异步任务处理平台

Celery Redis Django を使用して高可用性の非同期タスク処理プラットフォームを作成する

概要
インターネットの急速な発展とアプリケーション システムの複雑化に伴い、非同期タスクの必要性 処理需要も増加しています。 Celery は、非同期タスクを処理する使いやすい方法を提供する強力な分散タスク キュー フレームワークです。 Redis は、キャッシュ、キュー、その他のシナリオで広く使用されている高性能のインメモリ データ ストレージ システムです。 Django は、豊富な機能と優れた拡張性を備えた効率的な Web アプリケーション フレームワークです。この記事では、Celery Redis Django を使用して高可用性の非同期タスク処理プラットフォームを構築する方法を紹介し、具体的なコード例を示します。

Celery と Redis のインストールと構成
まず、Celery と Redis をインストールする必要があります。 Python 仮想環境では、次のコマンドを使用してインストールします。

pip install celery
pip install redis

インストールが完了したら、いくつかの関連構成を実行する必要があります。まず、次の設定を Django の settings.py ファイルに追加します。

# Celery配置
CELERY_BROKER_URL = 'redis://localhost:6379/0'  # Redis的地址
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

次に、celery.py という名前のファイルを作成し、そのファイルに Celery 関連の設定情報を追加します。

from celery import Celery
import os

# 设置Django环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_django_project.settings')

# 实例化Celery
app = Celery('your_django_project')

# 加载Django配置
app.config_from_object('django.conf:settings', namespace='CELERY')

# 自动发现异步任务
app.autodiscover_tasks()

このように, Celery と Redis のインストールと構成が完了しました。

非同期タスクの作成
次に、非同期タスクを作成する必要があります。 Django アプリケーションで、tasks.py ファイルを作成し、非同期タスクを実装します。

from celery import shared_task

# 定义异步任务
@shared_task
def process_task(file_path):
    # 任务逻辑代码
    # 处理文件
    with open(file_path, 'r') as file:
        content = file.read()
        # 具体的处理逻辑
        ...

このタスクでは、ファイル パスをパラメーターとして受け取る process_task 関数を定義し、特定のタスク ロジックで実装します。関数内で。

非同期タスクを呼び出す
非同期タスクを呼び出す必要がある場合、単純に process_task 関数を呼び出してパラメータを渡すだけです。

from your_django_project.tasks import process_task

...

# 调用异步任务
result = process_task.delay(file_path)

上記のコードは、遅延メソッドを呼び出します。非同期タスクを実行するには、ファイル パスをパラメータとして渡します。

タスクのステータスと結果の監視
次に、タスクのステータスと結果を監視して取得する必要があります。 Django では、この関数を実装するビューを作成できます。

from your_django_project.tasks import app

...

# 获取任务状态和结果
def get_task_status(request, task_id):
    task = app.AsyncResult(task_id)
    response_data = {
        "status": task.status,
        "result": task.result
    }
    return JsonResponse(response_data)

上記のコードでは、AsyncResult メソッドを呼び出してタスクのステータスと結果を取得し、それを JSON 形式の応答としてカプセル化して返します。フロントエンド。

Celery ワーカーの開始
最後に、非同期タスクを処理するために Celery のワーカーを開始する必要があります。ルート ディレクトリで、次のコマンドを実行します。

celery -A your_django_project worker --loglevel=info

このようにして、Celery Redis Django を使用して高可用性の非同期タスク処理プラットフォームを構築するプロセス全体が完了しました。

概要
この記事では、Celery Redis Django を使用して高可用性の非同期タスク処理プラットフォームを構築する方法を紹介し、具体的なコード例を示します。これにより、さまざまな非同期タスクを簡単に処理でき、システムの応答速度と信頼性が向上します。この記事が、非同期タスク処理プラットフォームを構築する皆さんの参考になれば幸いです。

以上がCelery Redis Django を使用して、可用性の高い非同期タスク処理プラットフォームを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。