围绕Django构建web应用

<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自带的开发服务器不具有的一些功能:

  1. 高效率处理静态文件,web server一般用c语言开发,调用是native的函数,对IO,文件传输都有针对性的优化
  2. 充当一个简易的网络防火墙,可以denny一些ip,简单的控制并发连接数量等等。
  3. 处理高并发短连接请求,把成千上万用户的request通过内网的几十个长连接进行转发。一方面是web server擅长处理高并发,另一方面,包括Django在内的大部分框架都不具备处理高并发的能力。

这其中nginx当下最引人瞩目,相比其它web server,它具有很多优点,下面列举几个

  1. 性能非常卓越,非常稳定
  2. 安装简单,依赖包少
  3. conf文件非常容易配置

了解性能优势,可以查看webserver性能对比
下图是并发性能测试。

并发性能测试

存储

数据的存储是门大学问,作者也不是相关专家,因此这里只列举一些网上的资料。
需要说明的是,流行的数据库,Django 一般都有现成的backends,对于暂时不支持的适用Django也会有一些workround,详情见databases

流行的数据库

Oracle
MySQL
PostgreSQL
MongoDB
Microsoft SQL Server

流行的数据库排名

cache

当下流行的有redismemcache
关于两者性能的对比,网上的资料也比较多,比如这个

应用

开发

Django采用了类似MVC的模式,叫做MVT(Model–Template–View),如下图所示。

MVT模式

测试

Django推荐使用unittest
模块进行测试,具体说明见相关文档
调用方式非常简单

python manage.py test [model_to_test]

利用这个方式可以很方便的进行集成测试

部署

Django 支持多种部署方式,流行的有下面几种

  1. How to use Django with Gunicorn
  2. How to use Django with uWSGI

详细文档在这里

好用的工具

IDE

pycharm,对Django的支持很好。
你能想到或是没想到的功能,基本上这个IDE都集成了,写python战斗力加成20%,谁用谁知道。

git

作为当前优秀的版本控制工具,还不会使用git的程序员已经跟不上时代啦。

fabric

Fabric 是一个 Python (2.5-2.7) 库和命令行工具,用来流水线化执行 SSH 以部署应用或系统管理任务。它是:

  • 一个让你通过 命令行 执行 任意 Python 函数 的工具;
  • 一个让通过 SSH 执行 Shell 命令更加 容易pythonic 的子程序库(建立于一个更低层次的库)。

比如要部署一个最新版本的Django应用,可能会执行下面的步骤(非完全)

  1. 更新最新代码
  2. 执行测试
  3. 部署应用

每次都要执行命令行很麻烦,写shell脚本又不好维护,这个时候fabric就能帮到你,只需要执行一条命令就能优雅地完成上面的所有工作。
详情请见官网

supervisor

为保证线上服务的稳定运行,需要一个工具无时无刻“照顾”线上业务的运行,让它开启自起,自动重启,或者更多的功能,这个时候supervisord就是最好的选择之一。
它是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。
这是一个很好的实践

celery

业务可能需要定时向用户推送一些信息,或者跑一些定时任务。大多数人可能马上想到使用crontab。
现在可以使用更强大的工具:celery
Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。
它是一个专注于实时处理的任务队列,同时也支持任务调度。

它是支持Django的,见这里

sentry

说到跟踪错误信息,不得不提sentry
对Django也有很好的支持 raven

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容

  • 已经同步到gitbook,想阅读的请转到gitbook: Django 1.10 中文文档 Let’s learn...
    leyu阅读 1,854评论 1 8
  • 时间戳,是在区块链中区块产生的这一刻,就存在于区块之中。它对应的是每一次交易记录的认证,证明交易记录的真实性和可信...
    一享书香阅读 361评论 0 1
  • 一名大一在读学生,护理专业,平时分享一些专业或者生活上面的小事
    无人观赏的黑天鹅阅读 138评论 0 0
  • 【原文】(6.7) 子曰:“回也其心三月不违仁,其余则日月至焉而已矣。” 【通译】 孔子说:“...
    钱江潮369阅读 401评论 0 3
  • 有一个人想要成为用剑的高手,就去找一位剑术大师.他问:"我努力练习多少时间能成为高手呢?" 大师说:"10年." ...
    最爱可乐阅读 198评论 0 1