2019独角兽企业重金招聘Python工程师标准>>>

当网站使用redis缓存时,就会涉及到缓存的过期时间,redis数据库中的内容就会消失。这个时候进行用户操作又会变慢,所以要采用一种办法,当缓存刚好要过期时,能够使得redis数据库自动对缓存内容进行更新。这个办法就是使用 celery,具体配置及使用我已经先在Django框架17: Celery的使用中总结完毕,一般按着步骤实现就可以了,这里我只将定时刷新的功能实现一下。

按照Django框架17: Celery的使用配置好后,在需要添加任务的app/tasks.py添加:

from __future__ import absolute_import
from celery import shared_task
from read_statistics.utils import *@shared_task
def get_post_list():"""缓存博客列表"""post_list = Post.objects.filter(Q(display=0) | Q(display__isnull=True))# 30*60表示30秒*60,也就是半小时cache.set('post_list', post_list, 30 * 60)@shared_task
def get_new_publish():"""缓存最新发表的15篇博客"""new_publish = Post.objects.filter(Q(display=0) | Q(display__isnull=True))[:15]# 60*60表示60秒*60,也就是1小时cache.set('new_publish', new_publish, 30 * 60)@shared_task
def get_new_recommend():"""缓存最新推荐的博客"""post_content_type = ContentType.objects.get_for_model(Post)new_recommend = get_new_recommend_post(post_content_type)# 60*60表示60秒*60,也就是1小时cache.set('new_recommend', new_recommend, 30 * 60)@shared_task
def get_last_7_days_hot_data():"""缓存周榜博客"""last_7_days_hot_data = get_7_days_read_posts()# 60*60表示60秒*60,也就是1小时cache.set('last_7_days_hot_data', last_7_days_hot_data, 30 * 60)@shared_task
def get_last_30_days_hot_data():"""缓存月榜博客"""last_30_days_hot_data = get_30_days_read_posts()# 60*60表示60秒*60,也就是1小时cache.set('last_30_days_hot_data', last_30_days_hot_data, 30 * 60)@shared_task
def get_all_hot_posts():"""缓存总榜博客"""all_hot_posts = get_all_read_posts()# 60*60表示60秒*60,也就是1小时cache.set('all_hot_posts', all_hot_posts, 30 * 60)

在这里,我设置的缓存过期时间为30分钟,定时任务的时间间隔则需要去后台开启。我使用的是xadmin后台,因为xadmin的注册方式稍与admin注册方式有所区别,所以djcelery应用并不会自动注册到后台应用,在xadmin管理界面也找不到,所以可以同时打开xadmin后台和admin后台。

完成tasks.py的编写之后,还要运行定时进程,本来可以将此进程放在Supervisor中挂起,考虑到环境配置和路径比较繁琐,我就直接直接通过nohup命令将程序以守护运行,同样可以打印出状态信息。

nohup python manage.py celery beat > celery-beat.log 2>&1 &

在interval设置好定时间隔后,然后去periodic task中添加任务,并选择对应任务的时间间隔。

原文出处:https://www.jzfblog.com/detail/118,文章的更新编辑以此链接为准。欢迎关注源站文章!

转载于:https://my.oschina.net/zhenfei/blog/2222288

我的网站搭建 (第十七天) celery 定时刷新缓存相关推荐

  1. 自定义html托管,10分钟搞定“傻瓜式”的静态网站搭建托管之旅

    原文发布于微信公众号:腾讯云存储(关注有惊喜) 静态网站:有别于动态网站,它就是只包含静态内容(如图片.音频.视频.HTML.CSS.JS)的网站,不依赖服务器端动态渲染页面. 那么静态网站托管应该如 ...

  2. 个人网站搭建---godaddy域名+freewebhostingarea免费空间

    自己准备做一个个人网站,由于第一次做所以遇到了各种困难,现在把自己的一些经历经验贴出来供大家参考.此贴针对一个完全没有经验的菜鸟,大牛勿喷. 个人搭建一个网站首先要考虑的是网址(域名),然后是你的文件 ...

  3. 搭建可视化网页的software package_网页制作与网站搭建步骤教程

    原标题:网页制作与网站搭建步骤教程 现代建设网站,只需要一个鸣蝉建站系统的账号,注册一个账号直接用网站模板建站,基本上几十秒就可以做出网站的雏形,随后再添加相关的产品信息和内容,即可建成网站. 鸣蝉智 ...

  4. 浅析网站搭建时所遇到的这样或那样的问题

    在面对网站建设问题时,我们需要明确很多注意事项,毕竟想要建设好一个网站很简单,但是如果能运营好一个网站确实不容易的.不管前期的建设工作还是中后期的运营和优化工作都需要有良好的建设前提,那么我们在进行网 ...

  5. 远程服务器php环境搭建,免费网站搭建与phpstorm远程部署

    免费网站搭建 我是用gmail绑定的,密码是我常用的那套. 站点列表 1个账号可以免费搭建多个站点.每个站点的后台都是php+mysql,版本都可换. 这个页面及其重要. 下面的detail可以查看每 ...

  6. 动态网站的技术路线_简单动态网站搭建

    如何在windows服务器上配置wordPress和discuz 网站建设中的概念讲解 网站建设的基础操作 网站程序的基础使用 网站程序的优化 简单动态网站搭建 软件部署 域名和主机的购买 域名解析 ...

  7. 安装+wordpress+出现403+forbidden_教程篇 | WordPress网站搭建详细教程

    嗨,大家好,上一次给大家分享了关于阿里云服务器的购买以及登录服务器的教程,这次分享的是利用阿里云服务器搭建wordpress网站的教程. 首先介绍一下wordpress. WordPress是当今世界 ...

  8. 网站搭建从零开始(七) WordPress站点的完善

    1.WordPress网站前后端常用语言简介和运行过程 通常一个网站的整个构建过程中需要大量的技术支持,尤其是用到很多种计算机语言.网站的构建主要分后端和前端两部分,后端代码在服务器上运行,而前端程序 ...

  9. 网站搭建从零开始(三)域名解析

    前面介绍了网站搭建所需要的两大要素:域名和服务器,这次要说的是域名解析,也就是把域名和服务器进行绑定的过程. 我们在访问网络时,网址会被发送到DNS服务器,然后由DNS服务器返回我们所要访问的服务器I ...

最新文章

  1. 如何用初中知识理解机器学习到底在干什么事情
  2. Last Theorem CodeForces - 1325F(dfs树找最大环+思维)
  3. ssh(Spring+Spring mvc+hibernate)——hibernate.cfg.xml
  4. mysql订单详情的设计_订单功能模块设计与实现
  5. 1.vue简介以及模板语法---vue教程
  6. JAVA 比较两个日期相差的天数的方法比较
  7. django 1.8 官方文档翻译: 3-1-4 视图装饰器
  8. 清除内外边距(HTML、CSS)
  9. python单循环_「单循环赛」单循环赛制 - seo实验室
  10. win7 iis安装教程
  11. 详解机器学习/深度学习中的梯度消失/梯度爆炸的原因/解决方案
  12. HTTP请求头headers
  13. python实现税后工资_Python扣除个人税后的工资计算器
  14. php ua解析,UA识别有什么用?
  15. 工业无线客户端服务器,基于4G工业路由器光伏发电无线远程监控解决方案
  16. 数据结构(C语言第2版) 课后习题答案之第四章 串、数组和广义表
  17. 中国全国及各地人口总数和男女比例情况
  18. Tomcat报ClassFormatException: Invalid byte tag in constant pool: 19解决方法
  19. iOS App由生到死的过程
  20. 下载利器IDM下载及免费注册!

热门文章

  1. Linux下的一个图形管理工具webmin
  2. 你是怎样给下属分配工作
  3. eclipse 工程复制
  4. 使用ASP.NET2.0显示照片
  5. Xshell连接不上虚拟机Linux系统
  6. BS文件夹上传操作(二) ——基本功能实现
  7. redhat5.8+heartbeat+web+nfs(提供软件包)
  8. 关于Euclid算法
  9. mySQL优化 my.ini 配置说明
  10. 如何防止GSM手机被窃听