hand
_1_35_29
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:05:22
资料 | link |
---|---|
pypi | https://pypi.org/project/django-celery/ |
github | https://github.com/celery/django-celery |
没有名为djcelery的包
有名为django-celery的包
代码引入import djcelery
celery版本 | 系统 | 支持 |
---|---|---|
all | Linux | √ |
4.0以上 | Windows | × |
4.0以下 | Windows | √ |
命令 | 作用 |
---|---|
pip install eventlet |
windows下运行celery 4+版本,要装 |
pip install folower |
监控celery运行任务状态 |
pip install celery==3.1.26.post2 django-celery==3.2.2 flower==0.9.2
pip install Django-celery==3.3.1 # django3以上的需要安装
pip install Django-celery==3.2.2 # django2
import djcelery
# 当djcelery.setup_loader()运行时,Celery便会去查看INSTALLD_APPS下包含的所有app目录中的tasks.py文件,找到标记为task的方法,将它们注册为celery task。
djcelery.setup_loader()
#broker是代理人,它负责分发任务给worker去执行。此处用的是Redis作为broker
BROKER_URL = 'redis://127.0.0.1:6379/1'
# 导入目标任务文件 tasks.py ,即每个app包含有 @task 装饰器的函数文件
CELERY_IMPORTS = ('app01.tasks')
# 设置时区
CELERY_TIMEZONE = 'Asia/Shanghai'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_ENABLE_UTC = True
#表示使用了django-celery默认的数据库调度模型,任务执行周期都被存在默认指定的orm数据库中.
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
# RESULT_BACKEND 结果保存数据库
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config',
'djcelery', #加入djcelery 也就是为了在django admin里面可一直接配置和查看celery
]
python manage.py makemigrations # 不需要make直接下方migrate就可以生成表格
python manage.py migrate
djcelery_crontabschedule
djcelery_intervalschedule
djcelery_periodictask # 记录任务信息表
djcelery_periodictasks
djcelery_taskstate
djcelery_workerstate
# 下面是定时任务的设置,我一共配置了三个定时任务.
from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
#定时任务一: 每24小时周期执行任务(del_redis_data)
u'删除过期的redis数据': {
"task": "app.tasks.del_redis_data",
"schedule": crontab(hour='*/24'),
"args": (),
},
#定时任务二: 每天的凌晨12:30分,执行任务(back_up1)
u'生成日报表': {
'task': 'app.tasks.back_up1',
'schedule': crontab(minute=30, hour=0),
"args": ()
},
#定时任务三:每个月的1号的6:00启动,执行任务(back_up2)
u'生成统计报表': {
'task': 'app.tasks.back_up2',
'schedule': crontab(hour=6, minute=0, day_of_month='1'),
"args": ()
},
}
在app下新建tasks.py,必须要是tasks.py文件名称,django会自动查找到app下的该文件
# coding=utf-8
from celery import task
@task()
def del_redis_data():
# 此处是一个删除redis数据的操作。具体略过
@task()
def back_up1():
# 此处是一个备份到日报表的操作。具体略过
@task()
def back_up2():
# 此处是一个生成统计报表的操作。具体略过
python manage.py runserver # 启动web服务
python manage.py celery beat -l info # 启动celery beat
python manage.py celery worker -l info # 启动celery woker
python3.X - Web - Django3.2.9
整章节共43节
快分享给你的小伙伴吧 ~