Django - 页面静态化和crontab定时任务(二)

一. 前言

一个网页会有很多数据是不需要经常变动的,比如说首页,变动频率低而访问量大,我们可以把它静态化,这样就不需要每次有请求都要查询数据库再返回,可以减少服务器压力
我们可以使用Django的模板渲染功能完成页面渲染

注意:

  • 下面用到的django-crontab是基于Linux系统的crontab,所以Windows系统下是无法运行的,若有需要,可以考虑APSchedulerDjango-apscheduler实现定时任务

二. 页面静态化解释及实现

所谓页面静态化,就是提前渲染出完整的html页面,以静态文件的形式存起来,那么下一次浏览器访问的时候,直接返回该静态文件就可以了
1)减少数据库查询次数
2)提高页面响应效率

1.页面静态化的作用

1)将动态渲染生成的页面结果保存成html文件,放到静态文件服务器中。
2)用户直接去静态服务器,访问处理好的静态html文件。
在这里插入图片描述

2.页面静态化的注意点

1)页面中用户相关数据不能静态化。
2)动态变化的数据不能静态化。

3.页面静态化实现

在Django项目里新建一个py文件,里面写一个渲染首页的方法

from django.template import loader
def generate_static_index_html():
    # 先获取首页模版文件
    template = loader.get_template('index.html')
    # 要渲染的数据(动态数据)
    context = { 
        'categories': None, 
        'contents': None
    }
    # 得到数据后后的渲染完整页面
    page = template.render(context)
    # 把渲染后的文件保存起来
    with open('XXXXXXX/front_end_pc/index.html', 'w') as f:
        f.write(page)

此时,cd到该py文件所在目录并且执行该文件即可得到静态化的页面

二. 定时任务 - Crontab

虽然页面不是经常更新,但是需要更新的时候也不可能每次都人为地去执行程序渲染新的页面。此时我们可以使用定时任务自动执行

1. 安装crontab

pip install django-crontab -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 在配置文件注册

打开Django的配置文件settings.py,在INSTALLED_APPS列表注册crontab

INSTALLED_APPS = [
      .....
    'django_crontab', # 定时任务
]

3. 制定定时规则

Crontab什么时候执行,时间间隔是多少,这些都需要在Django的配置文件settings.py里进行设置。新建一个CRONJOBS列表

# 指定定时任务规则
CRONJOBS = [
    # 写法是:(时间规则,要执行的任务,">>",日志文件位置)
    # 每1分钟生成一次首页静态文件
    # 分 时 日 月 周
    ('*/1 * * * *', 'apps.contents.crons.generate_static_index_html', '>> ' + os.path.join(BASE_DIR, 'logs/crontab.log'))
    # 每月的23日12点1分0秒执行一次
    # ('1 12 23 * *', 'apps.contents.crons.generate_static_index_html', '>> ' + os.path.join(BASE_DIR, 'logs/crontab.log'))
]

如果在执行过程中遇到非英文字符引发的字符异常,可以添加以下的配置

# ubuntu
CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'
# mac
CRONTAB_COMMAND_PREFIX = 'LANG=zh_cn.UTF-8'

4. 管理任务

打开Django提供的shell,执行下面的命令管理任务

# 添加定时任务
python manage.py crontab add
# 显示已激活的定时任务
python manage.py crontab show
# 移除定时任务
python manage.py crontab remove

以上就是Django - 页面静态化和crontab定时任务的基本使用介绍,希望对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/27098.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Amazon SageMaker:探索AI绘画云端部署新方案

目录 1 从艺术实验到AI绘画2 什么是Amazon SageMaker?3 云端部署AI绘画应用3.1 模型构建与部署3.2 AI绘画测试(文生图) 4 亚马逊云科技中国峰会 1 从艺术实验到AI绘画 在过去,人们只希望基于已有的给定数据做一些预测和拟合,因此判别式模型得…

怎么登录远程轻量云服务器?

​  轻量云服务器是一种基于云计算技术的服务器,具有价格低廉、配置灵活、易于管理等优点。但是,由于轻量云服务器通常是在云端运行,需要通过远程连接才能进行管理和操作。那么,怎么登录远程轻量云服务器呢? 要远程连接轻量云服…

JMeter测试笔记(五):JDBC请求

引言: 进行性能测试时,我们有时需要模拟数据库的访问和操作,而JMeter中的JDBC请求可以帮助我们实现这个目的。 在本文中,我们将深入了解JDBC请求的使用方式,并学习如何正确配置它们来模拟对数据库的访问和操作。 如…

C#,彩票数学——彩票预测是玄学还是数学?什么是彩票分析?怎么实现彩票号码的预测?

彩票原理系列文章 彩票与数学——彩票预测是玄学还是数学?https://mp.csdn.net/mp_blog/creation/editor/122517043彩票与数学——常用彩票术语的统计学解释https://mp.csdn.net/mp_blog/creation/editor/122474853彩票与数学——彩票缩水的数学概念与原理https://…

Codeforces Round 877 div2 C No Prime Differences

目录 一、题目 二、题目分析 三、 一、题目 传送门 C. No Prime Differences time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given integers n and m. Fill an n by m grid with the…

连杆滑块伸缩模组的制作

1. 运动功能说明 连杆滑块伸缩模组的主要运动方式为舵机带动滑块沿着光轴平行方向做伸缩运动。 2. 结构说明 本模组主要是由舵机、滑块、光轴、连杆等组成。 3. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 主控板 Basra主控板&…

java ssm贸易平台-物流管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java ssm贸易平台-物流管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主…

工业深度学习软件 从标注 训练 到测试 再到现场部署

工业深度学习软件 从标注 训练 到测试 再到现场部署 M7000技术规格表 Producer Specification 影像系统 Imaging Sys 适配相机 supported cameras 支持海康,迈德威视,度申2D相机(可根据需求增加适配其他厂家相机) Support for Hi…

为什么有了IP地址,还需要MAC地址呢?

不知道大家有没有困惑:为什么有了IP地址,还需要MAC地址呢?他们之间到底有什么联系?又有什么区别?是不是有一个是多余的? 流言传到了“IP地址”和“MAC地址”的耳朵里,他俩也非常苦恼&#xff0c…

php通过cURL爬取数据(2):CURLINFO_HTTP_CODE返回0

CURLINFO_HTTP_CODE返回0 一、项目说明二、curl_getinfo返回异常1.小鹅通SDK2.CURLINFO_HTTP_CODE为0的原因有哪些?3.返回CURLINFO_HTTP_CODE0的解决方案4.请求超时和服务器配置,CPU的使用率有关系吗5.结论 三、阿里云短信发送延迟后而集中发送1.发送集中…

【回眸】Python入门(五)基础语法列表和词典:Python如何消灭重复性劳动

前言 本篇博客为填坑篇,这个系列的上一篇竟然是2021年的9月30更新的,离谱,差点就到断更两周年纪念日了,后续逐渐走向填坑的每一天,继续创作,希望这个系列的专栏文章能帮助到更多有需要的人。 列表 什么是列…

操作系统的发展史(DOS/Windows篇)

█ DOS操作系统 20世纪70年代,伴随着计算机技术的成熟,操作系统也进入了一个快速发展阶段。现代操作系统的概念,也在那一时期逐渐形成。 1975年初,MITS电脑公司推出了基于Intel 8080芯片的Altair 8800微型计算机。这是人类历史上…

电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。

统一供应商门户 便捷动态、呈现丰富 供应商门户具备内外协同的能力,为外部供应商集中推送展示与其相关的所有采购业务信息(历史合作、考察整改,绩效评价等),支持供应商信息的自助维护,实时风险自动提示。…

CSAPP - AttackLab实验(阶段1-5)

AttackLab实验 实验内容 官网:http://csapp.cs.cmu.edu/3e/labs.html “AttackLab”是一个Linux下的可执行C程序,包含了5个阶段(phase1~phase5)的不同内容。程序运行过程中,要求学生能够根据缓冲区的工作方式和程序…

Sui Builder House日本京都站开启报名

下一站Sui Builder House将于6月29-30日在日本京都举行,为世界各地的开发者提供身临其境地学习和交流的机会。 春日的樱花已经绽放,黄金周也已经过去,现在是时候来京都参加Sui Builder House一起庆祝夏天的来临了。来自日本和周边地区的开发…

我用ChatGPT写2023高考语文作文(一):全国甲卷

2023年 全国甲卷 适用地区:广西、贵州、四川、西藏 人们因技术发展得以更好地掌控时间,但也有人因此成了时间的仆人。 这句话引发了你怎样的联想与思考?请写一篇文章。 要求:选准角度,确定立意,明确文体&am…

【TaskMatrix.AI - Visual ChatGPT】连接超大模型和超多API来完成任务

Github项目地址:https://github.com/microsoft/TaskMatrix 目前大规模预训练模型(比如ChatGPT)已经能够完成多个任务,例如 提供强大的对话功能,in-context learning能力和代码生成能力生成高层次的解决问题框架 然而…

什么是 tokens,ChatGPT里面的Tokens如何计数?

什么是 tokens,ChatGPT里面的Tokens如何计数? 什么是 tokens? Tokens 可以被认为是词语的片段。在 API 处理提示之前,输入会被分解成 tokens。这些 tokens 并不会精确地在单词的开始或结束处切分 - tokens 可以包含尾随的空格甚…

TI DSP芯片C2000系列读取FLASH数据

本文记录如何读取TI芯片的flash数据 进入TI官网下载UNIFLASH工具 点击查看详情 点击下载选项,根据系统下载对应版本 下载完成之后,点击安装。安装完成之后双击图标点开。如果你的板子已经供电,且编程器已经连接好,UNIFLASH会自动…

chatgpt赋能python:用Python实现ping命令:掌握网络连接的艺术

用Python实现ping命令:掌握网络连接的艺术 当我们需要测试网络连接的时候,ping命令是最经典的选择之一。然而,在一些情况下,使用命令行并不是很方便。那么,有没有可能用Python编写一个类似ping的功能呢? …