大小:51.78M
更新时间:23-08-31
系统:Pc
python web开发实战是一本Python Web开发的百科全书,用户从中可以了解Web工程从开发到上线的完整流程,作者是豆瓣一线开发者董伟明。全书按照一个Web产品从无到有、从简单变复杂、从基础到进阶的过程,多角度、全方位讲述了Python Web开发。内容涉及Web框架、测试、数据库、消息队列、服务化、持续集成等,并且对实际Web项目中大量实战经验的总结,有用、实用,适用于移动开发工程师、Web运维、算法/数据分析师、有技术基础的产品和运营人员。
《python web开发实战》有几个特点:第一,使用了当前主流和前瞻性的技术,如Docker、Ubuntu 16.04 LTS、Cython、CFFI、Py.test、asyncio、IPython 5.0 LTS 等,书中一部分内容是在Python 3 下完成的。本书中全部工具都使用当前最新版,能保证在相当长的时间内书中的内容都不会过时;第二,笔者在国内应用Python 最大的豆瓣网做产品开发,一直在第一线写代码,大量例子和经验都来自实际工作;第三,笔者非常关注GitHub 和Python 社区,会第一时间了解到新的趋势和思想,并在书中体现。举个例子,代码检查工具pep8 已经在Guido van Rossum 的要求下改名为pycodestyle了。
笔者和身边的一些朋友交流过,大多数人买书来看,基本上都是看到书中讲到了自己一直不太懂的知识点,或者感兴趣的话题。因此,在写作本书时,笔者有意让每章相对独立。你可以选择跳着看,当然更推荐从第1 章一直看到最后一章,因为本书是按照一个Web 产品从无到有、从简单变复杂、从基础到进阶的过程编排的。
我们先来大致了解一下这个过程。
第1 章首先回答两个问题:“为什么应该选择Python 作为Web 开发语言”和“选择Python 2 还是Python 3”,然后介绍Python 主流的Web 框架,并为如何选择给出建议。
第2 章帮助读者跑起来一个包含本书所讲内容的Ubuntu 环境,读者可以直接在里面运行书中的例子。限于篇幅,如果想要了解环境搭建的整个过程以及笔者做这些选择的理由,可以在本书源代码项目中的setup.md 文件中获取。接着将展开介绍Python 的包管理和虚拟环境相关的内容。通过学习这章,读者对Python 生态环境会有一定了解。
第3 章先从最简单的Flask 例子开始,学习一些Flask 相关的知识,接着学习Jinja2和Mako 模板(Mako 在豆瓣的使用非常广泛),使用MySQL,最后学以致用,从零开始完成一个相对复杂、在豆瓣有类似功能的文件托管服务。这个项目贯穿本书,在之后的章节中会对它继续扩展。
第4 章这一章是Flask 的进阶,包含了大量的Flask 扩展的使用,还介绍了信号机制和Werkzeug 的使用。到这里读者对Flask 和Web 开发已经入门,可以根据自己的想法自己做一些应用了。
第5 章现在Web 端应用对交互的要求很高,移动应用对后端的API 需求也非常多,需要很好的异构通信方式,本章将介绍笔者对REST 的理解,并提出一些设计API 的注意事项,最后通过jQuery 和fetch 实现使用Ajax 的例子,让读者了解如何让前后端通信。
第6 章我们已经有了有实际业务逻辑的Web 应用,可是用户还不能访问,本章将介绍如何选择应用服务器,用主流的方式在生产环境中运行这个应用。之前应用中只是使用了MySQL,在实际的网站应用中,缓存、键值对数据库、NoSQL 数据库都是主流的解决方案,本章将一一介绍为什么要用这种技术以及怎么用。最后作为总结,笔者根据自己的实际经验绘制一张大型网站的架构图,并详细介绍其中模式选择的理由和经验。
第7 章在第6 章,Web 应用已经运行起来,用户也可以访问了。但是如下问题也随之出现:
◇ 应用依赖多个服务,如MySQL、Redis 等,这些服务器在新环境中的部署是有顺序要求的,而且程序要保证一直在运行状态。
◇ 上线过程不能自动化。每次上线都要手动执行很多命令,既耗时又容易出错。
◇ 希望能及时了解和分析服务器和应用的运行状态。
看完本章相信你就可以知道对应的解决方案了。
第8 章Web 应用运行良好,可是应用的质量还没有保证,如何在上线之前发现更多的Bug 的需求变得越来越迫切。本章将介绍主流的测试方法,并用一个GitHub 项目实现持续集成。
第9 章前面介绍的是Web 应用必备的内容,从本章开始介绍一些进阶的内容。消息队列能带来更好的用户体验,本章将介绍豆瓣用到的消息队列工具Beanstalkd,以及Celery 推荐的消息队列RabbitMQ。如果Web 产品有大量的定时任务或者其他异步任务,就可以使用Python 界最知名的Celery 解决,本书将从浅入深让读者熟悉Celery 原理和使用方法,最后分享笔者使用的进阶实践。
第10 章现在各个大公司都在谈服务化,通过这几年的改造和实践,大家都有自己的一套服务化方案,豆瓣也不例外。本章将告诉读者为什么要服务化、豆瓣的服务化设计,以及使用开源的ri 改造文件托管服务。
第11 章笔者在工作中经常要给各个业务方提供数据支持,如日志统计分析、数据报表。本章将演示如何使用纯Python 代码在单个服务器上利用多核实现MapReduce功能,还详细讲解豆瓣工程师都在用的DPark,包含安装、环境配置、使用和框架化分析UV & PV;接着将展示几个笔者在实际工作中遇到过的数据报表需求,并讲解如何用Pandas 做数据可视化。
第12 章这一章将详细介绍IPython 和Jupyter Notebook 这两个工具,并分享其在豆瓣对应的实践。除此之外,还列出笔者日常用来排错和调试的工具,包括了解Linux服务器的相关情况、性能测试、分析Python 程序性能瓶颈三个方面。
第13 章Web 开发日常也会有一些并发编程工作,所以本章以抓取微信公众号文章为主线,分别使用多线程、多进程、Gevent、Future 和asyncio 这5 种编程方式完成不同阶段的爬取任务,也深入地分析在它们之间如何选择。
第14 章Python 进阶并不只针对Web 开发人员,对于所有Python 开发者都有意义。
第15 章介绍笔者日常进行Web 开发的流程和经验,还着重介绍了多个代码质量保证工具,以及豆瓣的一些质量保证实践。最后一节,笔者将谈谈代码评审的意义和实际经验。
第1 章初识Python Web 开发1 Python Web 开发介绍1 为什么应该选择Python 作为Web 开发语言2 选择Python 2 还是Python 3 2 Web 框架介绍3 主流Web 框架3 小众的Web 框架5 选择Web 框架时应遵循的原则5 第2 章Web 开发前的准备7 搭建一个能运行的虚拟机环境7 安装VirtualBox 8 使用Vagrant 安装8 使用Docker 安装10 包管理和虚拟环境13 包管理13 使用pip 替代easy_install 13 distribute、distutils 和setuptools 14 entry_points 15 插件系统16 虚拟环境17 virtualenv 18 virtualenv 定制化18 virtualenvwrapper 21 virtualenv-burrito 23 autoenv 24 进阶篇:pip 高级用法25 命令自动补全25 普通用户安装25 编辑模式25 使用devapi 作为缓存代理服务器26 PYPI 的完全镜像27 第3 章Flask Web 开发 28 Flask 入门29 安装Flask 29 从Hello World 开始29 配置管理31 调试模式32 动态URL 规则32 自定义URL 转换器33 HTTP 方法34 唯一URL 35 构造URL 36 跳转和重定向36 响应38 静态文件管理40 即插视图40 蓝图43 子域名43 命令行接口44 模板46 Jinja2 46 Mako 52 使用MySQL 60 安装MySQL 和驱动61 设置应用账号和权限61 用MySQLdb 写原生语句62 事务提交和回滚63 ORM 简介64 使用SQLAlchemy 65 使用ORM 67 数据库关联69 在Flask 中使用SQLAlchemy 71 记录慢查询73 理解Context 74 本地线程74 Werkzeug 的Local 75 flask.request 76 使用上下文77 使用LocalProxy 替代g 80 从零开始实现一个文件托管服务80 首页84 重新设置图片页86 下载页87 预览页87 短链接页88 第4 章Flask 开发进阶 89 Flask 的信号机制89 Blinker 的使用89 Flask 中内置的信号90 自定义信号92 信号订阅的高级用法92 Flask-Login 中的信号93 Flask 的扩展95 Flask-Script 95 Flask-DebugToolbar 97 Flask-Migrate 98 Flask-WTF 100 Flask-Security 102 Flask-RESTful 109 Flask-Admin 111 Flask-Assets 115 Werkzeug 的使用118 DebuggedApplication 118 数据结构120 功能函数121 密码加密122 中间件123 第5 章REST 和Ajax 127 什么是REST 127 RESTful API 设计指南128 使用名词来表示资源128 关注请求头129 合理使用请求方法和状态码129 正确地使用REST 130 对输出的结果不再包装131 不要做出错误的提示131 使用嵌套对象序列化131 版本132 URI 失效和迁移132 信息过滤132 速度限制133 缓存133 并发控制134 使用Ajax 135 第6 章网站架构. 140 Python 应用服务器140 WSGI 协议141 常见的WSGI 容器141 Web 服务器Nginx 143 Web 服务器与应用服务器的区别143 为什么要选择Nginx 143 安装Nginx 144 使用Nginx 部署Flask 应用144 缓存系统Memcached 149 Libmc 安装配置150 使用原生SQL 缓存152 缓存更新策略157 Memcached 使用的经验157 键值对数据库Redis 157 操作Redis 158 Redis 应用场景159 分片和集群管理168 NoSQL 数据库MongoDB 169 为什么使用NoSQL 169 MongoDB 169 使用pymongo 的例子171 使用Mongoengine 的例子174 MongoDB 实践经验176 大型网站架构经验182 缓存183 负载均衡183 高可用184 业务拆分184 集群184 第7 章系统管理 186 进程管理Supervisor 186 Supervisor 组件187 配置Supervisor 187 使用Supervisor 190 应用部署Fabric 193 Fabric 应用接口194 使用Fabric 管理Flask 应用197 配置管理工具SaltStack 和Ansible 199 SaltStack 200 Ansible 207 使用Psutil 213 使用Sentry 收集错误信息215 安装配置Sentry 216 启动Sentry 218 创建团队和项目218 配置SDK 220 使用StatsD、Graphite 等搭建Web 监控223 配置Graphite 225 使用StatsD 226 配置Diamond 227 发布指标项227 使用Grafana 228 使用Kenshin 232 第8 章测试和持续集成 233 使用unittest 和doctest 做测试233 unittest 233 doctest 236 使用py.test 和mock 237 py.test 237 mock 241 持续集成243 使用Tox 集成248 第9 章消息队列和Celery 250 使用Beanstalkd 251 使用Beanstalkc 252 深入理解RabbitMQ 253 AMQP 254 虚拟主机258 插件系统258 通过Web 和REST API 管理RabbitMQ 259 故障转移262 使用Celery 262 Celery 的架构263 Celery 序列化265 安装配置Celery 265 从一个简单的例子开始265 指定队列268 使用任务调度269 任务绑定、记录日志和重试270 在Flask 应用中使用Celery 271 深入理解Celery 274 Celery 的依赖274 任务调用277 信号系统278 Worker 管理279 监控和管理Celery 280 子任务281 进阶篇:Celery 最佳实践283 使用自动扩展283 善用远程Debug 283 合理安排任务周期284 合理使用队列和优先级285 保证业务逻辑的事务性285 关闭你不想要的功能285 使用阅后即焚模式285 善用Prefetch 模式286 善用工作流286 第10 章服务化 288 为什么需要服务化288 RPC 框架289 服务化带来的问题290 微服务架构290 使用ri 291 定义IDL 文件292 服务端实现294 客户端实现297 PIDL——豆瓣的服务化实践301 PIDL 架构302 第11 章数据处理 305 使用MapReduce 做日志分析305 使用MapReduce 305 使用DPark 309 分布式文件系统MooseFS 309 Mesos 310 配置DPark 环境311 从WordCount 开始314 PV & UV 统计316 数据报表320 发送带有样式和附件的邮件320 创建xlsx 文件325 使用Pandas 328 Pandas 入门329 读取MySQL 数据库332 和Flask 应用集成332 第12 章帮助工具. 336 IPython 336 IPython 交互模式338 常用的Magic 函数338 配置和自定义IPython 341 IPython 的扩展系统342 使用IPython 调试复杂代码343 双进程模型344 并行计算345 Jupyter Notebook 347 Notebook 格式350 Notebook 格式转换和预览351 为什么使用RequireJS 352 在Notebook 里使用Echarts 353 富显示355 自定义JavaScript 和CSS 样式356 使用nbextension 扩展Notebook 358 在Notebook 上使用并行计算359 调试和Debug 工具360 了解Linux 服务器运行情况360 性能测试366 Python 程序性能分析369 性能调优实践373 进阶篇:定制基于IPython 的交互解释环境374 进阶篇:豆瓣东西的Jupyter Notebook 实践376 第13 章Python 并发编程383 使用多线程385 使用Gevent 392 使用多进程399 使用Future 406 使用asyncio 408 async/await 409 Future 412 使用aiohttp 414 使用队列416 第14 章Python 进阶 418 使用标准库模块418 errno 419 subprocess 420 contextlib 421 glob 424 operator 424 functools 426 collections 428 Python 语法最佳实践432 命名434 目录xxix 使用join 连接字符串435 EAFP vs LBYL 435 定义类的__str__/__repr__ 方法436 优美的Python 437 从Python 3 移植439 partialmethod 439 singledispatch 440 suppress 442 redirect_stdout/redirect_stderr 443 使用CFFI/Cython 编写Python 扩展444 使用CFFI 444 使用Cython 447 进阶篇:使用PyObjC 发送通知451 第15 章Web 开发项目实践455 Web 项目经验总结455 开发流程455 使用合理的项目结构456 关注代码复杂度457 代码质量保证工具457 Pycodestyle 对中文缩进的处理458 Flake8 459 Pylint 460 其他代码质量保证工具461 使用AST 做静态检查461 其他静态检查工具467 编写Flake8 扩展468 代码评审的意义470 作为被评审者471 作为评审者472 评审的标准473
1、下载并解压,得出pdf文件
2、如果打不开本文件,请务必下载pdf阅读器
3、安装后,在打开解压得出的pdf文件
4、双击进行阅读试读
同类热门
类似软件
Python高级编程67.96M890人在用 Python高级编程是一款pdf格式的高清扫描版图书,已经附带了pdf阅读器,即下即用。该书通过大量的实例,介绍了Python语言的最佳实践和敏捷开发方法,并涉及整个软件生命周期的高级主题,诸如持续集成、版本控制系统、包的发行和分发、开发模式、文档
查看量化投资以python为工具53.25M975人在用量化投资以python为工具是一本量化投资优质工具书,由蔡立耑编著。全书主要介绍了Python的入门级操作及Python语言的介绍和安装,并由浅入深的为读者讲解了Python语言和Python量化的重要操作知识点,可以快速的帮助用户完成Python语言的
查看python程序设计教程76.13M431人在用 pythony语言是一种解释型、面向对象的计算机程序设计语言,能够广泛用于计算机程序设计教学语言,系统管理编程脚本语言,科学计算等。但如何才能从入门到精通呢?这里小编特别提供python程序设计教程 pdf下载,由江红、余青松编著,清华大学和北京交通
查看python入门经典教材45.5M1074人在用 python是诞生于一种开放源代码的脚本编程语言,语言风格清晰,具有较强的可读性,应用非常广泛。可对于部分新手程序员来讲,想要灵活运用python必须拥有一套秘籍,而小编今天分享的“python入门经典”就是非常优秀的秘籍,通过该书读者不仅能掌握p
查看Python性能分析与优化5.39M486人在用Python性能分析与优化是一本Python代码分析与优化指导书籍,由web程序员多格里奥编著。本书首先介绍了什么是性能分析,性能分析如何在项目开发周期中发挥作用,以及通过在项目中进行性能分析实践能够取得的效果。紧接着开始介绍分析性能所需的核心工具(性能
查看python学习手册第4版pdf版92.37M1114人在用python是一种非常流行的开源编程语言,可以在各种领域中用于编写独立的程序和脚本,它不仅具备免费、可移植的特色,还拥有了极其强大的功能,使用起来也相当的方便。相信来自各个角落的程序猿已经发现,Python对于开发者效率和软件质量的关注,这无论在大项目还
查看Effective Python:编写高质量python代码的59个有效方法25.93M1133人在用Effective Python:编写高质量python代码的59个有效方法是一本python编辑手册,由美国程序员布雷特·斯拉特金编著。本书以使用场景为主导的精练教学方式,汇聚了59条优秀的实践原则、开发技巧和便捷方案,并以实用的代码范例来解释它们。其
查看python基础教程第2版中文高清pdf版29.63M560人在用本次分享的是python基础教程第2版中文高清pdf版,由于是PDF格式,因此用户需要安装PDF阅读器才能正常阅读,好了让我们回到正题。这是一本包括Python程序最基本的设计操作教程,介绍了Python的基础知识和基础概念,包括了列表、元组、字符串、字
查看python qt gui快速编程:PyQt编程指南77.77M861人在用 python qt gui快速编程:PyQt编程指南是一本PyQt开发指导手册,由英国程序员Mark Summerfield编著。全书主要讲述如何利用Python和Qt开发GUI应用程序的原理、方法和关键技术。全书共分四个部分:第一部分主要讲述Py
查看热门标签
网友评论0人参与,0条评论
最新排行
当代广告学(第8版)73.11Mpdf扫描版 当代广告学是由广告学世界级权威加利福尼亚大学教授威廉·阿伦斯(WiliamF.Arens)推出的广告整合营销著作。该书充分融合了传播学,营销学,经济学和心理学等多学科整合的观点,能够独立解决用户在当代广告行业中遇到的各种难题,高效、实用!
查看excel实战技巧精粹pdf版77.45M Excel实战技巧精粹PDF是一本主要讲述关于Excel经验的PDF文档,该书通过对Excel技术论坛上上百万提问的分析与提炼,汇集了用户在使用Excel过程中最常见的需求,通过几百万个示例的演示与讲解,将Excel高手的过人技巧手把手交给读者,并
查看ASP.NET 3.5 揭秘(卷2)58.31MASP.NET 3.5 揭秘(卷2)是一本ASP.NET 3.5框架揭秘书籍,由美国程序员沃尔瑟(WaltherS)编著。本书为需要创建网站的专业程序员而写,是一本使用ASENET 3.5创建网站的十分全面的参考书,主要介绍了ASP.NET的安全性,缓存
查看c++入门经典 第9版261.87Mpdf扫描版 c++入门经典 第9版是一本C++语言入门指导书,由美国程序员Walter Savitch编著。本书内容丰富,风格清晰,每一章都是C++的重要知识点,越往后将越加深奥与困难,不过不用太担心,请认真阅读书中章开头的小节总览和随处可见的小结框,它们可以
查看穿布鞋的马云:决定阿里巴巴生死的27个节点129.5M王利芬pdf扫描版穿布鞋的马云:决定阿里巴巴生死的27个节点是一本马云阿里创业录,由王利芬和李翔两人共同编著.本书内容丰富,干货满满,全书归纳出对创业者有益的27个关键节点:关于融资、关于团队、关于管理、关于谈判、关于失败、关于企业愿景、关于企业文化、关于战略、关于人才…
查看c++程序设计语言(第1-3部分)(原书第4版)157.95Mpdf扫描版c++程序设计语言(第1-3部分)(原书第4版)是C++领域的一本经典的参考书,由C++语言之父Bjarne Stroustrup编著,全书知识结构完整,对C++语言介绍非常全面,作者按照基本功能、抽象机制、标准库的递进层次组织全书,由浅入深地把C++语
查看sql server 2012深入解析与性能优化(第3版)265.39M波尔顿pdf扫描版 sql server 2012深入解析与性能优化(第3版)是一本SQL Server 2012使用指南,由美国程序员波尔顿Christian Ballton、Justin Langford、Glenn Berry、Gavin Payne、Amit
查看简明法语教程修订版上册下册pdf26.63M简明法语教程修订版是一本非常优秀的法语自学的教科书,作者孙辉,原是为高等院校第二外语教学而编写的一套速成教材,包括法语上下册,在商务印刷馆的支持下,修订版仍保留了原作的风格和体例,包括《语音教程》、《入门教程》、《初级教程》和《中级教程》总共58课时。简
查看