hand
_1_35_24
4
python3.X - Web - Django3.2.9
共43篇
python3.X - Web - Django3.2.9
返回栏目
0k
0.6k
0.1k
0.2k
0.1k
0.2k
6k
1k
6k
2k
2k
0.4k
0.3k
0.3k
1k
0.5k
3k
2k
0.6k
0.9k
1k
1k
3k
0.1k
0.3k
0.4k
0.4k
0.1k
0.3k
2k
1k
1k
1k
5k
1k
1k
0k
3k
2k
0k
0.1k
0.3k
0k
返回python3.X - Web - Django3.2.9栏目
作者:
贺及楼
成为作者
更新日期:2024-06-13 21:04:46
官网:
https://django-celery-beat.readthedocs.io/en/latest/
celery版本 | 系统 | 支持 |
---|---|---|
all | Linux | √ |
4.0以上 | Windows | × |
4.0以下 | Windows | √ |
命令 | 作用 |
---|---|
pip install django-celery-beat |
设置定时或周期任务 |
pip install django-celery-results |
存储任务结果(看情况需要) |
pip install eventlet |
windows下运行celery 4+版本,要装 |
pip install flower |
监控celery运行任务状态 |
django-admin startproject celery_demo # 创建项目
python manage.py startapp demo # 创建app
from celery import Celery
from django.conf import settings
import os
# 为celery设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'celery_demo.settings')
# 创建应用
app = Celery("demo")
# 配置应用
app.conf.update(
# 配置broker, 这里我们用redis作为broker
BROKER_URL='redis://:332572@127.0.0.1:6379/1',
)
# 设置app自动加载任务
# 从已经安装的app中查找任务
# 如果您的 INSTALLED_APPS 设置包括 app1、app2 和 app3,celery 将自动注册任何可以通过查看 app1.tasks、 找到的修饰任务app2.tasks 和 app3.tasks
app.autodiscover_tasks(settings.INSTALLED_APPS)
from .tasks import *
from celery_demo.celery import app
import time
# 加上app对象的task装饰器
# 此函数为任务函数
@app.task
def my_task():
print("任务开始执行....")
time.sleep(5)
print("任务执行结束....")
from django.shortcuts import render
from django.http import HttpResponse
from .tasks import my_task
def index(request):
# 将my_task任务加入到celery队列中
# 如果my_task函数有参数,可通过delay()传递
# 例如 my_task(a, b), my_task.delay(10, 20)
my_task.delay()
return HttpResponse("<h1>服务器返回响应内容!</h1>")
from django.conf.urls import url
from django.contrib import admin
from demo.views import index
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', index),
]
celery -A celery_demo worker -l info
创建worker等待处理celery队列中任务, 在终端执行命令
python manage.py runserver
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'demo',
'django_celery_results', # 注意此处应用名为下划线
'django_celery_beat', # 插件用来动态配置定时任务,只要进行了第一步pip安装就可以直接注册了
]
app.conf.update( CELERYBEAT_SCHEDULER='django_celery_beat.schedulers.DatabaseScheduler',
)
python manage.py makemigrations # 不需要make直接下方migrate就可以生成表格
python manage.py migrate
表名 | models | 释义 |
---|---|---|
django_celery_beat_clockedschedule | django_celery_beat.models.ClockedSchedule | 特定时刻任务 |
django_celery_beat_crontabschedule | django_celery_beat.models.CrontabSchedule | 特定时间表任务,例如每周1运行的计划 |
django_celery_beat_intervalschedule | django_celery_beat.models.IntervalSchedule | 以特定间隔(例如,每5秒)运行的计划 |
django_celery_beat_periodictask | django_celery_beat.models.PeriodicTask | 此模型定义要运行的单个周期性任务 |
django_celery_beat_periodictasks | django_celery_beat.models.PeriodicTasks | 此模型仅用作索引以跟踪计划何时更改 |
django_celery_beat_solarschedule | django_celery_beat.models.SolarSchedule | 定制任务 |
加上django_celery_results还会有3个表
django_celery_results_chordcounter
django_celery_results_groupresult
django_celery_results_taskresult
celery beat --help
用法:celery beat[选项]
启动节拍周期性任务调度程序。
beat选项:
--detach 分离并作为在后台运行,守护进程。
-s、 --schedule TEXT 明细表数据库的路径。默认为`celerybeat-schedule`。扩展名“.db”可以附加到文件名。
-S, --scheduler TEXT 要使用的调度程序TEXT调度程序类。
--max-interval INTEGER 最大间隔整数两个时间表之间睡眠的最大秒数迭代。
-l、 --loglevel[DEBUG|INFO|WARNING|ERROR|CRITICAL|FATAL]日志记录级别。
后台处理选项:
-f、 --logfile --日志文件文本
--pidfile TEXT
--uid文本
--uid文本
--gid文本
--umask文本
--executable 可执行文本
选项:
--help显示此消息并退出。
python3.X - Web - Django3.2.9
整章节共43节
快分享给你的小伙伴吧 ~