ホームページ >バックエンド開発 >Python チュートリアル >Celery Redis Django に基づく非同期タスク処理のベスト プラクティス
Celery Redis Django に基づく非同期タスク処理のベスト プラクティス
はじめに:
Web 開発では、実行する必要があるものに遭遇することがあります。電子メールの送信、レポートの作成など、時間のかかるタスク。これらのタスクを Web リクエストで直接実行すると、ユーザー エクスペリエンスが低下し、システムがクラッシュすることもあります。この問題を解決するには、Celery、Redis、Django を組み合わせて非同期タスク処理を実装します。この記事では、Celery Redis と Django を組み合わせて最適な非同期タスク処理を実現する方法を紹介します。
1.1. Celery のインストール: pip を使用して Celery をインストールします。
pip install celery
1.2. Redis の構成: Redis をメッセージ ミドルウェアとしてインストールして構成する必要があります。
1.3. Django の設定: Django プロジェクトでは必ず Celery を使用してください。
2.1. Celery インスタンスの作成: Celery インスタンスを構成および作成するには、Django プロジェクトのルート ディレクトリに celery.py
ファイルを作成します。
from __future__ import absolute_import import os from celery import Celery from django.conf import settings os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings') app = Celery('your_project') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
2.2. 非同期タスクの作成: Django プロジェクトのアプリケーションに tasks.py
ファイルを作成して、非同期タスクを定義します。
from celery import shared_task @shared_task def send_email(to, subject, message): # 实现发送邮件的代码
lay()
メソッドを呼び出すことでタスクを非同期に実行できます。 3.1. タスクのインポート:
from myapp.tasks import send_email
3.2. タスクのスケジュール:
send_email.delay('example@example.com', 'Hello', 'Welcome to our website!')
4.1. Worker の起動: ターミナル ウィンドウで次のコマンドを使用して Celery Worker を起動します。
celery -A your_project worker -l info
4.2. Beat の開始: タスクを定期的にスケジュールする必要がある場合は、次のコマンドを使用して Celery Beat を開始できます。
celery -A your_project beat -l info
4.3. タスクの監視: Flower を使用してタスクの実行を監視できます。
4.4. 結果バックエンドの設定: celery.py
ファイルに次のコードを追加して、タスクの結果を返すメソッドを設定します。
app.conf.update( CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend', )
上記は、Celery Redis Django に基づく非同期タスク処理のベスト プラクティスに関する紹介とサンプル コードです。 Web 開発で非同期タスクを処理する際に皆さんのお役に立てれば幸いです。
以上がCelery Redis Django に基づく非同期タスク処理のベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。