ホームページ >バックエンド開発 >Python チュートリアル >Celery Redis Django テクノロジーを活用して、スケーラブルな非同期タスク処理を実現します。

Celery Redis Django テクノロジーを活用して、スケーラブルな非同期タスク処理を実現します。

王林
王林オリジナル
2023-09-26 18:19:441660ブラウズ

利用Celery Redis Django技术实现可扩展的异步任务处理

Celery Redis Django テクノロジーを使用したスケーラブルな非同期タスク処理の実装

はじめに:
最新の Web アプリケーションでは、非同期タスク処理が重要なニーズになっています。一部のタスクは時間がかかる場合や、バックグラウンドで実行する必要がある場合があるため、非同期タスクを使用すると、アプリケーションのパフォーマンスとユーザー エクスペリエンスが向上します。スケーラブルな非同期タスク処理を実現するために、Celery、Redis、Django テクノロジーを組み合わせることができます。これにより、大規模なタスク処理に直面したときにアプリケーションが水平方向に拡張できるようになります。この記事では、Celery、Redis、Django テクノロジーを使用してスケーラブルな非同期タスク処理システムを実装する方法を説明し、具体的なコード例を示します。

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

  1. Celery のインストール:
    最初に、Celery ライブラリをインストールする必要があります。 Celery ライブラリは、次のコマンドを実行してインストールできます:
pip install celery
  1. Redis のインストール:
    次に、Redis をメッセージ ブローカーとしてインストールする必要があります。 Redis は、次のコマンドを実行してインストールできます:
pip install redis
  1. Django のインストール:
    次に、Django フレームワークをインストールする必要があります。次のコマンドを実行して Django をインストールできます:
pip install django
  1. Celery の構成:
    Django プロジェクトの settings.py ファイルに、次の Celery 構成を追加します:
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
  1. Celery インスタンスを作成します:
    Django プロジェクトの __init__.py ファイルに、次のコードを追加します:
from celery import Celery

app = Celery('your_app_name')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

2. 非同期タスク コードを作成します

  1. tasks.py ファイルを作成します:
    Django プロジェクトのルート ディレクトリに、tasks.py という名前のファイルを作成します。
  2. 非同期タスクの作成:
    tasks.py で、非同期タスクを定義できます。たとえば、単純な非同期タスクを作成して、Celery を介して非同期タスクを処理するプロセスをデモンストレーションします:
from celery import shared_task
from time import sleep

@shared_task
def send_email():
    sleep(5)  # 休眠5秒来模拟一个耗时的任务
    # 在此处编写发送邮件的代码
    print("邮件发送成功!")

3. Celery Worker を開始し、

    #Start Celery Worker を実行します。
  1. コマンド ラインで、Django プロジェクトのルート ディレクトリに移動し、次のコマンドを実行して Celery Worker を起動します。
  2. celery -A your_app_name worker --loglevel=info
    Celery Beat を開始します。コマンド ライン、ナビゲート Django プロジェクトのルート ディレクトリに移動し、次のコマンドを実行して Celery Beat (タスクを定期的に実行するために使用) を起動します:

  1. celery -A your_app_name beat --loglevel=info
  2. 4. Django ビューで非同期タスクを呼び出す

Django ビューで非同期タスクをインポートする:
    非同期タスクを呼び出す必要がある場合は、必ずタスクをインポートする必要があります。たとえば、views.py ファイルに次の import ステートメントを追加できます。

  1. from your_app_name.tasks import send_email
非同期タスクを呼び出す:
    非同期タスクを呼び出す必要がある場合は、 .lay() メソッドを使用してタスクを呼び出します。たとえば、Django ビュー関数では、次のコードを実行して send_email タスクを呼び出すことができます。

  1. def some_view(request):
        # 其他代码...
        send_email.delay()
        # 其他代码...
  2. 上記の手順を通じて、Celery、Redis、およびジャンゴシステム。 Celery と Redis をメッセージ ブローカーと結果ストレージとして使用し、Django を使用して非同期タスクの管理とスケジュールを設定します。このようにして、私たちのアプリケーションは多数の非同期タスクを処理でき、水平方向に拡張する機能を備えています。

結論:

Celery、Redis、Django テクノロジーを使用すると、スケーラブルな非同期タスク処理システムを簡単に実装できます。適切な構成とスケジューリングを通じて、アプリケーションは多数の非同期タスクを効率的に処理できるため、ユーザー エクスペリエンスとアプリケーションのパフォーマンスが向上します。同時に、Celery や Redis などの信頼性の高いツールを利用して、大規模なタスク処理に直面したときにシステムの安定性と信頼性を高めることができます。


参考リンク:

https://docs.celeryproject.org/en/stable/index.html
  1. https://realpython.com/asynchronous -tasks-with-django-and-celery/

以上がCelery Redis Django テクノロジーを活用して、スケーラブルな非同期タスク処理を実現します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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