围绕Django构建web应用

作者: 大蟒传奇 | 来源:发表于2016-09-18 13:26 被阅读566次

    <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

    相关文章

      网友评论

        本文标题:围绕Django构建web应用

        本文链接:https://www.haomeiwen.com/subject/hsowettx.html