Django Advanced Extensionのシステム背景はセロリを使用しています

システムのバックグラウンドで特定の時間に特定のタスクを実行したい場合、または一定の間隔で特定のタスクを実行したい場合は、セロリを使用してそれを完了できます。

目次

インストール

セロリをインストールする

django_celery_beat をインストールする

セロリの構成

登録申請書

セロリの構成

__init__.pyを変更する

テーブルの移行

移行を実行する

コンソール実行中のスクリーンショット

データテーブルの追加

django-celery-result をインストールする

注文の実行

登録申請書

テーブルを作成する

エラーが発生した場合

バックグラウンド管理者アカウントを作成する

タスクファイルの作成

タスクを追加

定期的なタスク

スケジュールされたタスクを開始する 

要約する


インストール

セロリをインストールする

pip install celery

django_celery_beat をインストールする

システムはスケジュールされたタスクをバックグラウンドで使用するため、追加のパッケージをインストールする必要があります。

pip install django_celery_beat

セロリの構成

登録申請書

まずアプリケーションを settings.py に登録します。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
    'django_celery_beat'
]

セロリの構成

プロジェクト ディレクトリに celery.py ファイルを作成します

内容は以下の通りです。

from celery import Celery
from django.conf import settings
import os


# 为celery设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

# 创建应用
app = Celery('project')

# 配置应用
app.conf.update(
    # 配置broker, 这里我们用redis作为broker
    BROKER_URL='redis://127.0.0.1:6379/1',

    # 使用项目数据库存储任务执行结果
    CELERY_RESULT_BACKEND='django-db',

    # 配置定时器模块,定时器信息存储在数据库中
    CELERYBEAT_SCHEDULER='django_celery_beat.schedulers.DatabaseScheduler',

)

# 设置app自动加载任务
# 从已经安装的app中查找任务
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

__init__.pyを変更する

プロジェクト ディレクトリ内の __init__.py ファイルを変更し、次の内容を追加します。

from .celery import app as celery_app

__all__ = ['celery_app']

テーブルの移行

タイマー情報はデータベースに保存されるため、対応するテーブル移行ファイルを生成する必要があります。

次に、移行操作を実行して、 diango_celery_beat に対応するテーブルを作成します。

移行を実行する

python manage.py migrate django_celery_beat

コンソール実行中のスクリーンショット

 

 

データテーブルの追加

django-celery-resultをインストールする

celery タスクの記録をデータベースに保存するには、django-celery-results をインストールする必要があります。

注文の実行

pip install -U django-celery-results

登録申請書

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
    'django_celery_beat',
    'django_celery_results',
]

 

テーブルを作成する

python manage.py migrate

データベース追加テーブル

 

エラーが発生した場合

(1071, '指定されたキーが長すぎます。キーの最大長は 1000 バイトです')

 

解決

settings.pyに追加

DJANGO_CELERY_RESULTS_TASK_ID_MAX_LENGTH = 191

 

バックグラウンド管理者アカウントを作成する

管理者アカウントが作成されていない場合は、次のコマンドを実行します。

python manage.py createsuperuser

 

タスクファイルの作成

サブアプリケーション ディレクトリに task.py ファイルを作成し、実行方法を設定します。

from celery import shared_task
import time


# 用于定时执行的任务
@shared_task
def schedule_execute():
    print("我每隔5秒钟时间执行一次....")

タスクを追加

管理バックグラウンド管理者にログインします。

Web サイトのバックグラウンド管理者にログインして、対応するタスクを追加できます。

言語が設定されているため、中国語で表示されます。定期タスク、スケジュールされたタスク、カレンダー イベント、スケジュールされたタスク、および間隔はすべて、スケジュールされたタスクに設定できます。

定期的なタスク

 

 

スケジュールされたタスクを開始する 

celery -A project beat -l info

ストレージが構成されている場合、タスクは 5 秒ごとに実行されます。

その後、各タスクの実行結果も対応するデータベースに保存されます。

要約する

主な手順は、スリーパーティ クラス ライブラリをインストールし、バックグラウンドでスケジュールされたタスクを追加し、コマンド ラインから celery キューを開始することです。

おすすめ

転載: blog.csdn.net/json_ligege/article/details/131374096