对于用户,没有登录时浏览的首页是一样的,首页内容不经常变化。
如果多个用户访问,访问的页面一样,那查询的数据库也是一样,何不把页面生成响应的静态页面?
那什么时候需要重新生成静态页面?
使用celery里边定义任务函数来生成静态页面。
当管理员后台修改了首页信息,对应表格中的数据的时候,需要重新生成首页静态页面。
django-celery+redis进行异步任务处理生成静态页面
Pip install django-celery=3.2.2
Pip install django-redis=4.10.0
pip install redis==2.10.6
Pip install flower #可视化平台
实现步骤:
配置settings
附settings代码:
import djcelery #导入django-celery模块
djcelery.setup_loader()#进行模块加载
BROKER_URL='redis://127.0.0.1:6379/1'#任务容器地址,redis数据库地址
CELERY_IMPORTS=('CeleryTask.tasks')#具体任务文件
CELERY_TIMEZONE='Asia/Shanghai'#celery时区
CELERYBEAT_SCHEDULER='djcelery.schedulers.DatabaseScheduler'#celey处理器
# celery 的定时器
from celery.schedules import crontab
from celery.schedules import timedelta
CELERYBEAT_SCHEDULE={#定时器策略
#定时任务一:每隔30s运行一次
u'测试定时器1':{
"task":"CeleryTask.tasks.generate_static_index_html",
# "task":"CeleryTask.tasks.taskExample",
#"schedule":crontab(minute='*/2'), #or 'schedule':timedelta(seconds)=3
"schedule":timedelta(seconds=60),
"args":(),
},
}
给celery创建独立的app