31.Django缓存和信号
2018-02-13 00:44
281 查看
缓存
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者Redis中之前缓存的内容拿到,并返回Django中提供了6种缓存方式:
开发调试
内存
文件
数据库
Memcache缓存(python-memcached模块、pylibmc模块)
1.配置
from django.core.signals import request_finished from django.core.signals import request_started from django.core.signals import got_request_exception from django.db.models.signals import class_prepared from django.db.models.signals import pre_init, post_init from django.db.models.signals import pre_save, post_save from django.db.models.signals import pre_delete, post_delete from django.db.models.signals import m2m_changed from django.db.models.signals import pre_migrate, post_migrate from django.test.signals import setting_changed from django.test.signals import template_rendered from django.db.backends.signals import connection_created 内置信号调用
内置信号调用方法
2.内置信号注册函数
对于内置的信号,使用时需要在信号中注册执行函数,当程序执行相应操作时,自动触发注册函数:创建sg.py
# sg.py from django.db.models.signals import pre_init def f1(sender, **kwargs): print("构造方法执行前") print(sender, kwargs) pre_init.connect(f1) # django的modal执行其构造方法前,自动触发 可以为内置信号中的任意
__init__.py加载sg.py
import sg
views.py
from app01 import models def signal(request): obj1 = models.UserInfo.objects.create(user="root") print('obj1') obj2 = models.UserInfo.objects.create(user="root") print('obj2') return HttpResponse("OK")
结果:
构造方法执行前 obj1 构造方法执行前 obj2
3.自定义信号
定义信号import django.dispatch pizza_done = django.dispatch.Signal(providing_args=["toppings", "size"]) # toppings,size 需要传入的参数
注册信号
def callback(sender, **kwargs): print("callback") print(sender,kwargs) pizza_done.connect(callback)
触发信号
from 路径 import pizza_done pizza_done.send(sender='seven',toppings=123, size=456)
由于内置信号的触发者已经集成到Django中,所以其会自动调用,而对于自定义信号则需要开发者在任意位置触发
相关文章推荐
- Django 补充models操作,中间件, 缓存,信号,分页
- django form表单插件,中间件,缓存,信号
- Django之中间件、缓存以及信号
- Django--缓存、信号、序列化
- Django(信号,缓存,序列化,与性能有关数据库查询)
- django的cookie和session以及内置信号、缓存
- Django进阶之缓存和信号
- Django(七)缓存、信号、Form
- Django 缓存、信号
- 自动化运维Python系列之Django信号、缓存操作
- django--缓存,序列化,信号
- Python开发【Django】:缓存、信号
- django memcached缓存机制(初稿)
- Django 进阶(装饰器,Mixin,信号,模式)
- Django缓存
- django 使用redis做缓存处理的基本操作
- Django中的信号
- Django--信号
- 在 Django 中使用 Redis 做缓存
- Python的Django框架中模板碎片缓存简介