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

実践経験: Celery と Redis を Django に統合して非同期タスクを実装する

WBOY
WBOYオリジナル
2023-09-26 16:33:371517ブラウズ

実践経験: Celery と Redis を Django に統合して非同期タスクを実装する

実践経験: Celery と Redis を Django に統合して非同期タスクを実装する

はじめに:
Web アプリケーションの複雑さが増し続けるにつれて、多くの操作で Spend が必要になります。多くの時間とリソース。ユーザー エクスペリエンスとシステム効率を向上させるために、開発者は多くの場合、時間のかかる操作を非同期タスクに変換して実行する必要があります。 Django では、Celery と Redis を統合することで非同期タスクを実装できます。この記事では、Django で Celery と Redis を統合する方法を、実用的なコード例とともに紹介します。

  1. Celery と Redis をインストールして構成する:
    まず、Celery と Redis がインストールされていることを確認します。次のように pip を使用して Celery をインストールできます:
pip install celery

次に、Redis をインストールするには、次のコマンドを使用できます:

sudo apt-get install redis-server

インストールが完了したら、設定を行う必要があります。 Django プロジェクトでは、Celery と Redis を使用することを知らせます。プロジェクトの settings.py ファイルに、次のコードを追加します。

# CELERY SETTINGS
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

ここでは、Redis のローカル アドレスとポートを指定します。 Redis が実行中であり、指定されたポートでリッスンしていることを確認してください。

  1. Celery タスクの作成:
    Django プロジェクトのルート ディレクトリに、tasks.py という名前のファイルを作成します。このファイルで、Celery タスクを定義します。以下はサンプル コードです:
from celery import Celery

app = Celery('myapp', broker='redis://localhost:6379/0')

@app.task
def add(x, y):
    return x + y

この例では、Celery アプリケーションを作成し、add という名前のタスクを定義します。 add タスクは 2 つのパラメーター x と y を受け取り、それらの合計を返します。

  1. Celery タスクの呼び出し:
    Celery タスクを定義したので、次のステップは、Django ビューでそれを呼び出すことです。 views.py ファイルに、時間のかかる操作を実行する必要があるビュー関数があるとします。 Celery タスクは次のように呼び出すことができます。
from myapp.tasks import add

def my_view(request):
    x = 10
    y = 20
    add.delay(x, y)
    return HttpResponse("Task added to the queue.")

この例では、前に定義した追加タスクをインポートし、view 関数で呼び出しました。 late() メソッドを使用してタスクを Celery キューに追加し、すぐに HttpResponse をユーザーに返します。こうすることで、時間のかかる操作を実行しているときにユーザーがブロックされることはありません。

  1. Celery ワーカーの開始:
    Celery タスクを実行するには、Celery ワーカーを開始する必要があります。プロジェクトのルート ディレクトリで、ターミナル ウィンドウを開き、次のコマンドを実行します。
celery -A myapp worker -l info

これにより、Celery ワーカーが起動され、キュー内のタスクの処理が開始されます。 -l パラメータを使用してログ レベルを設定できます。

  1. タスク実行の監視:
    ユーティリティ ツールである Flower を使用して、実行中の Celery タスクを監視できます。まず、Fflower がインストールされていることを確認します。
pip install flower

インストールが完了したら、新しいターミナル ウィンドウを開いて次のコマンドを実行します。

flower -A myapp --port=5555

これにより Flower サーバーが起動し、ポート 5555 をリッスンします。ブラウザで localhost:5555 にアクセスすると、現在実行中のタスクやタスクのステータスなどの情報を表示できます。

結論:
Celery と Redis を統合することで、Django で効率的な非同期タスク処理を実現できます。この記事では、Django プロジェクトで Celery を構成および使用するための基本的な手順を説明し、実用的なコード例を示します。この記事が、開発における非同期タスク処理の効率化の一助になれば幸いです。

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

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