<big><strong>Django</strong></big>
被解放的django不对,图放错了,应该是这个
Django是一套开源的web框架。它采用python语言,性能稳定,非常流行。开发者使用它可以很轻松上手搭建一个网站。
由于它在生产中的优异表现,有很多公司使用Django构建自己的业务。
学习Django可以帮助程序员发现更多的机会(大雾)。
本篇博客将简单介绍如何围绕Django构建一个web应用。需要说明的是,这里都是泛泛而谈,几乎没有代码,不会有很多操作细节。如果想要更深入地了解Django,请移步Django官网。
web应用
常见的web应用架构如下图所示
web应用常见架构
web 服务器
流行的web服务器像nginx,apache,lighttpd,IIS等等,一般都有着Django自带的开发服务器不具有的一些功能:
- 高效率处理静态文件,web server一般用c语言开发,调用是native的函数,对IO,文件传输都有针对性的优化
- 充当一个简易的网络防火墙,可以denny一些ip,简单的控制并发连接数量等等。
- 处理高并发短连接请求,把成千上万用户的request通过内网的几十个长连接进行转发。一方面是web server擅长处理高并发,另一方面,包括Django在内的大部分框架都不具备处理高并发的能力。
这其中nginx当下最引人瞩目,相比其它web server,它具有很多优点,下面列举几个
- 性能非常卓越,非常稳定
- 安装简单,依赖包少
- conf文件非常容易配置
了解性能优势,可以查看webserver性能对比。
下图是并发性能测试。
存储
数据的存储是门大学问,作者也不是相关专家,因此这里只列举一些网上的资料。
需要说明的是,流行的数据库,Django 一般都有现成的backends,对于暂时不支持的适用Django也会有一些workround,详情见databases。
流行的数据库
Oracle
MySQL
PostgreSQL
MongoDB
Microsoft SQL Server
cache
当下流行的有redis和memcache。
关于两者性能的对比,网上的资料也比较多,比如这个。
应用
开发
Django采用了类似MVC的模式,叫做MVT(Model–Template–View),如下图所示。
MVT模式测试
Django推荐使用unittest
模块进行测试,具体说明见相关文档。
调用方式非常简单
python manage.py test [model_to_test]
利用这个方式可以很方便的进行集成测试
部署
Django 支持多种部署方式,流行的有下面几种
详细文档在这里。
好用的工具
IDE
pycharm,对Django的支持很好。
你能想到或是没想到的功能,基本上这个IDE都集成了,写python战斗力加成20%,谁用谁知道。
git
作为当前优秀的版本控制工具,还不会使用git的程序员已经跟不上时代啦。
fabric
Fabric 是一个 Python (2.5-2.7) 库和命令行工具,用来流水线化执行 SSH 以部署应用或系统管理任务。它是:
- 一个让你通过 命令行 执行 任意 Python 函数 的工具;
- 一个让通过 SSH 执行 Shell 命令更加 容易 和 pythonic 的子程序库(建立于一个更低层次的库)。
比如要部署一个最新版本的Django应用,可能会执行下面的步骤(非完全)
- 更新最新代码
- 执行测试
- 部署应用
每次都要执行命令行很麻烦,写shell脚本又不好维护,这个时候fabric就能帮到你,只需要执行一条命令就能优雅地完成上面的所有工作。
详情请见官网。
supervisor
为保证线上服务的稳定运行,需要一个工具无时无刻“照顾”线上业务的运行,让它开启自起,自动重启,或者更多的功能,这个时候supervisord就是最好的选择之一。
它是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。
这是一个很好的实践。
celery
业务可能需要定时向用户推送一些信息,或者跑一些定时任务。大多数人可能马上想到使用crontab。
现在可以使用更强大的工具:celery
Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。
它是一个专注于实时处理的任务队列,同时也支持任务调度。
它是支持Django的,见这里
网友评论