1.FBV和CBV的区别和定义
FBV Function Base View 基于函数的视图函数来处理请求
CBV Class Base View 基于类的视图函数来处理请求
如何给CBV加装饰器
Class Base Views 导入Method_Decorator装饰器
给方法加 method
给dispatch加 dispatch
给类加 class
2.django中常用的视图响应方式
response HttpResponse JsonResponse字符串 redirect 跳转不同页面
视图函数中,验证装饰器有哪些?
验证是否已经登录 @annoymous_required
验证用户是否已经通过身份认证@login_required
允许超级用户才能访问视图 @superuser_only
检查是否是ajax请求 @ajax_required
检查用户是否属于有权限的用户组访问 @group_required
用于改进某个视图的响应时间,想知道运行需要多长时间 @timeit
3.FBV视图函数和CBV视图类的区别
视图函数 view 视图类 class
优点 容易实现跟理解,流程简单 容易拓展跟代码重复使用,
可以用混合类继承,单独使用类方法处理http请求,
有许多内置的通用视图函数
直接使用装饰器
缺点 代码难以重用,
处理http请求的时候要有分支表达式 不容易理解,代码流程负载,
父类混合类中隐藏很多代码,
使用装饰器的时候需要额外导入或者覆盖方法
4.Django如何实现高并发
uWsgi服务器实现web开发的请求响应流程 + Nginx实现负载均衡 + Djangoweb框架
Nginx + gunicorn + gevent + Django
5.如何提高Django应用程序的性能
1.前端优化
客户端http请求 精灵图 / 雪碧图 将网页中加载的图片统一加载,减少加载速度
使用浏览器缓存页面 将静态页面资源进行缓存加载,缓存时间自定义
对html + css + javascript 进行压缩,减少网络通信量
2.后端优化
动态数据缓存设置过期时间
使用celery消息队列实现异步操作,发邮件发短信
nginx项目部署配置合适的配置参数提升效率增加并发量
安全因素的话就是使用固态硬盘读写
服务器横向扩展
Django中当用户登录到A服务器进入登陆状态,下次被Nginx代理到B服务器会出现什么影响
如果说在A服务器服务端的session信息没有共享到B服务器,这就是说之前的登陆状态就没有了下次就不会登陆成功
6.Celery 异步处理的理解
celery是python开发简洁灵活可靠的分布式任务队列
本质是生产者消费者模式,生产者生产任务发送到消息队列,消费者负责处理任务
celery侧重于实时操作,对调度的支持也很好,每天可以处理数以百万计的任务
简单 celery工作流程配置简单
快速 一个单进程的celery可以处理百万个任务
灵活 celery的各个组件均可扩展和自定义
高可用 当任务中断或者执行失败的时候,它可以重新建立连接尝试执行任务
celery的应用场景有哪些
异步任务 用户需要在某一网站等待的时间长,把这种操作交给celery,直接返回给用户。
等待celery执行完毕之后给了用户,可以提高网站的并发以及用户体验感。
发送邮件验证
定时任务 定时清除冗余数据批量在几百台机器执行命令和任务,
celery可以轻松搞定。
Celery的工作原理是什么 ?
消息中间件Broker 任务执行单元Worker 结果存储Backend
celery (异步任务 / 定时任务)
async celery
---------- ----------
发送
---------- ----------
消息中间件
broker
---------- ----------
监控 监控
---------- ----------
任务执行单元 任务执行单元
celery worker celery worker
---------- ----------
存储 存储
---------- ----------
结果存储
BackEnd
celery分布式任务队列 其实就是生产者消费者模式。
包含异步任务和定时任务。
异步任务是通常在业务逻辑中被触发并且发往消息队列
定时任务由celery beat在一定的周期内将任务发往消息队列。
任务执行单元worker实时监视消息队列获取队列中的任务执行,
worker执行任务后将结果保存在backend中
消息中间件 redis / mongodb / Amazon
任务执行单元 负责从消息队列中取出任务执行,
可以启动一个或多个,也可以启动在不同的机器节点
任务执行消息队列任务的执行就是分布式的核心
结果存储 将任务消息队列中的结果存储在数据库中 mongodb/redis/django ORM
网友评论