システムのバックグラウンドで特定の時間に特定のタスクを実行したい場合、または一定の間隔で特定のタスクを実行したい場合は、セロリを使用してそれを完了できます。
目次
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 キューを開始することです。