Celery、Redis、および Django は、非同期タスク処理の効率を向上させるために一緒に使用されます
はじめに: Web アプリケーションの開発プロセスでは、しばしば次のような問題が発生します。処理する必要がある消費タスク。タスク。これらのタスクをリクエスト処理プロセス内で直接実行すると、ユーザーの待ち時間が長くなり、ユーザー エクスペリエンスにとって非常に不親切です。この問題を解決するには、Celery、Redis、Django を使用して時間のかかるタスクを非同期に処理し、システムのパフォーマンスとユーザー エクスペリエンスを向上させます。
Celery の紹介とインストール
Celery は、分散メッセージングに基づいて動作し、タスク スケジューリングもサポートするタスク キューです。 Celery のインストールは、pip コマンドで完了できます。
pip install celery
#Django 構成
まず、以下に示すように、Django プロジェクトの settings.py ファイルに Celery 構成項目を追加する必要があります。
# settings.py # Celery配置 CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json'
上記の構成では、 CELERY_BROKER_URL
および CELERY_RESULT_BACKEND
は、タスク キューと結果ストレージのバックエンドとして使用される Redis のアドレスとポートを指定します。
次に、次のようにプロジェクトの urls.py ファイルに Celery の設定を追加します。
# urls.py from django.urls import path from .views import AsyncTaskView urlpatterns = [ path('async-task/', AsyncTaskView.as_view(), name='async_task'), ]
タスク関数の作成
タスクを作成します。 Django アプリの py ファイルを作成し、その中に非同期タスク関数を定義します。サンプル コードは次のとおりです。
# app/tasks.py from celery import shared_task import time @shared_task def process_task(): # 模拟任务处理过程(等待5秒) time.sleep(5) return 'Task completed'
上記のコードでは、関数を Celery タスク関数に変換するために @shared_task
デコレータが使用されています。
ビューの実装
Django の views.py ファイルでビュー クラスを定義して、リクエストを受信し、非同期タスク関数を呼び出します。以下はサンプル コードです:
# app/views.py from django.views import View from .tasks import process_task from django.http import HttpResponse class AsyncTaskView(View): def get(self, request): # 调用异步任务 task = process_task.delay() return HttpResponse('Task started')
Celery サービスの開始
次のコマンドを使用して Celery ワーカー プロセスを開始します:
celery -A your_project_name worker --loglevel=info
次の点に注意してください your_project_name
Django プロジェクト名に置き換えます。
http://localhost:8000/async-task/
にアクセスします。すべてが正常であれば、返される結果は「Task」であることがわかります。始めました』。現時点では、タスクはバックグラウンドで非同期に処理されており、ユーザーのリクエスト処理をブロックしません。 結論: Celery、Redis、Django を組み合わせて使用すると、時間のかかるタスクを非同期で処理でき、システムのパフォーマンスとユーザー エクスペリエンスが向上します。タスク キューとタスク スケジュールは Celery を使用して簡単に管理でき、バックエンド ストレージとして Redis を使用することでタスク データの信頼性の高い保存が可能になります。このソリューションは Web アプリケーション開発で広く使用でき、その実装プロセスは具体的なコード例を通じて示されています。
以上がCelery、Redis、Django を組み合わせて使用すると、非同期タスク処理の効率が向上します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。