ホームページ  >  記事  >  バックエンド開発  >  Celery と Redis を Django に統合して非同期タスク処理を実装する方法

Celery と Redis を Django に統合して非同期タスク処理を実装する方法

王林
王林オリジナル
2023-09-28 17:40:52961ブラウズ

Celery と Redis を Django に統合して非同期タスク処理を実装する方法

Django で Celery と Redis を統合して非同期タスク処理を実装する方法

はじめに:
Web アプリケーションには、次のような時間のかかるタスクがたくさんあります。電子メールの送信、画像の処理、レポートの生成などを行います。これらのタスクが同期的に処理されると、ユーザー エクスペリエンスに重大な影響を与えるため、非同期タスク処理システムを使用する必要があります。

Django は人気のある Python Web フレームワークであり、Celery は非同期タスク処理ソリューションを提供するオープンソースの分散タスク キュー システムです。非同期タスク処理を実装するには、Redis を Celery のメッセージ ブローカーとして使用する必要もあります。

この記事では、Django で Celery と Redis を統合し、非同期タスク処理を実現する方法を紹介します。以下、インストールと設定、タスクの作成、タスクの呼び出し、タスクの監視の4つのパートに分けて説明します。

1. インストール構成

  1. Celery と Redis のインストール
    pip コマンドを使用して Celery と Redis をインストールします:

    pip install celery redis
  2. Django 設定を構成する
    Django プロジェクトの settings.py ファイルに次の構成を追加します。

    # Celery配置
    CELERY_BROKER_URL = 'redis://localhost:6379/0'
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

    ここでの構成では、メッセージ ブローカーおよび結果ストレージとして Redis を使用することを指定します。

  3. 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. タスクの作成

  1. タスクを作成します。 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 ツールを使用できます。次の手順でインストールして構成できます。

  1. Flower のインストール
    pip コマンドを使用して Flower をインストールします:

    pip install flower
  2. Start Flower
    ターミナルで次のコマンドを実行して Flower を開始します:

    celery flower --broker=redis://localhost:6379/0
  3. Fflower にアクセス
    ブラウザで http://localhost:5555 にアクセスして Flower モニタリング インターフェイスに入ります。タスクの実行を監視したり、タスクの詳細を表示したりできます。

概要:
上記の手順により、Django に Celery と Redis を統合して、非同期タスク処理を実装できます。 Web アプリケーションを開発する場合、非同期タスク処理はユーザー エクスペリエンスとシステム パフォーマンスを大幅に向上させることができるため、実際のプロジェクトで広範な応用価値があります。同時に、タスクの実行を監視することで、タスク処理の問題点を迅速に発見・解決し、システムの安定性と信頼性を確保します。

以上がCelery と Redis を Django に統合して非同期タスク処理を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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