搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Python Web开发实战
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121297335
  • 作      者:
    董伟明著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2016
收藏
编辑推荐

  Python Web开发的百科全书,了解Web工程从开发到上线的完整流程
  对实际Web项目中大量实战经验的总结,有用、实用

展开
作者简介

    董伟明,豆瓣高级产品开发工程师,主要负责豆瓣读书、电影、音乐、东西等产品线。从2011年开始接触Python, 从运维、运维开发到现在的Web开发,积累了丰富的运维和开发经验,作者积极参与开源项目,给IPython、pip及Python标准库等贡献过代码。这本书将作者这些年使用Python进行Web开发,对各方面知识的理解和积累的经验进行梳理和总结。

作者个人博客是http://www.dongwm.com,Github地址为https://github.com/dongweiming


展开
内容介绍

  《Python Web开发实战》按照一个Web 产品从无到有、从简单变复杂、从基础到进阶的过程,多角度、全方位讲述了Python Web 开发。内容涉及Web 框架、测试、数据库、消息队列、服务化、持续集成等,把网站工程的全貌展现在读者的眼前,从其中可以了解Web 工程从开发到上线的完整流程。另外,作者对当前现在正在流行的技术或工具,如Flask、Celery、Jupyter、Supervisor、
  SaltStack、Pandas 等都有较为详细的阐述,可作为技术选型时的参考。
  对于Web 开发者、使用Python 语言的运维工程师和运维开发工程师、想提高Python 技能的开发者、想了解Python Web 开发的其他开发者,《Python Web开发实战》都适合阅读。

展开
精彩书评

  伟明把他个人多年 Web 开发的经验,以及豆瓣十年来数百名优秀工程师在 Web 开发上实践的积累,凝聚在了这本书里,多维度、全面地介绍了 Python Web 开发涉及的各种技术。我向所有有兴趣使用 Python 做 Web 开发的开发者们,强烈推荐此书。

  ——洪强宁,爱因互动CTO,前豆瓣首席架构师,前宜信大数据创新中心首席架构师


  Web开发本身就是一件很庞杂的事情,模版渲染、API的开发、后端的部署,能在一本书中把这些问题都说清楚并不容易。感谢伟明把豆瓣的一些工程实践进行了整理和总结,这是本书宝贵的一点。

  ——清风,SAY CEO,前豆瓣技术总监


  伟明将自身在 Web 领域所有方面的经验提炼后整理成书,本质上是将几十个关联产品的官方文档,结合具体工程经验进行了梳理,给出了领域问题解决方案的关键思考点和自己的答案,而更加可贵的是,给出了这些思考点的来源,以及形成过程,即给出了解决各种 Web 领域问题的思维模式。

  ——Zoom.Quiet(大妈),优视眼动科技 CTO,Python 中文社区创始人之一和管理员


  阅读本书,我深切感受到了:全和新。本书的内容涉及了Web框架、Ajax的前后端交互、测试、数据库、数据分析、服务化、部署、系统管理、常用工具等内容,有点百科全书的意味。另外,书中讲的许多东西都是现在正在流行的技术或工具,像Flask、Celery、Jupyter、Supervisor、SaltStack、Pandas等。

  ——李迎辉,Python开源资深行者,Python-CN邮件列表创建人,UliPad和Uliweb作者


  本书由Python开发开始,循序渐进,把网站工程的全貌展现在读者的眼前,是了解Web工程从开发到上线完整流程的优秀参考书籍。

  ——邢犇(CNBorn), 前豆瓣东西技术负责人


  对于很多刚进入Python世界的人,伟明的这本书提供了一个非常好的“知识地图”,涉及了Python Web开发的方方面面。

  ——胡阳(the5fire),手机搜狐网,任资深开发工程师


  这本书从开发环境的搭建、Web 框架的使用,到最后的持续集成和 Python 的进阶用法,无一不是他多年的实际工程经验总结,十分宝贵。

  ——姚钢强(acmerfight),知乎工程师


  这本书非常全面地介绍了使用 Python 进行 Web 开发的方方面面,既有 Web 框架、缓存、消息队列、并发处理的场景介绍和技术选型,又有开发流程、质量保证的丰富实战经验。
  ——蔡斌(VeryCB),DeepDevelop工程师,前豆瓣条目组技术负责人
  整本书都是作者对实际Web项目中大量实战经验的总结,绝非纸上谈兵。相信通过阅读该书可以帮助开发者规避掉大量项目中的“坑”,构建出更高性能、更稳定的Web项目。
  ——Spawnris, 腾讯工程师



展开
精彩书摘

推荐序一

作为一名使用Python 作为主力开发语言十多年的老码农,常常被人要求推荐Python 相关的图书。经常推荐的都是一些讲解Python 语言本身的图书,而专注在Python 的常见应用领域—— Web 开发上的好书,却一直是凤毛麟角。也曾有出版社的朋友约我写一本,但我畏惧写书的艰辛,一直不敢答应。得知伟明的《Python Web 开发实战》一书即将出版,欣慰异常,心想伟明写这个专题实在是再合适不过,必为佳作。读完书稿,果不其然。

由于Python 具有开发快速、适合多人协作、库丰富、社区成熟等优点,因此是一门非常适合用于Web 开发的语言。国外的Youtube、Quora ,国内的豆瓣、知乎等,均是以Python 为主要语言开发的。说起Python 的Web 开发,很多人会理解成只要学会某个Web 框架,能写代码查查数据库,写模板渲染出HTML ,最多再学一下配个Web Server 把服务启动起来就行,没什么内容。多数Python 书里“Web 开发”的章节一般也就是讲这些。但其实要完成生产可用的,能够应对一定规模访问量的Web 系统,Web 开发工程师要学会的远远不止这些。环境搭建、API 设计、网站架构、系统管理、持续集成、服务化、数据处理、并发处理等,这些都是必要的,而且需要付出大量的努力才能掌握的知识。

伟明一直对技术抱有极强的兴趣,也有着优秀的动手能力。我对他的第一印象是从他发给豆瓣的求职信开始的:“目前我给glances、Salt、tmux-powerline、supervisor、mongo-pythondriver、circus、graphite-web、Diamond、autopep8、graph-explorer、pip、Celery 等开源项目贡献过代码,给Python 标准库logging 贡献过代码。”能够参与到这么多一线开源软件中的应聘者,确实少见。入职豆瓣后,伟明也表现出了对Web 开发的深刻理解,很快成为豆瓣多个Web 产品的主力,并几乎凭一人之力完成了CODE 项目的私有依赖剥离和开源。

伟明把他个人多年Web 开发的经验,以及豆瓣十年来数百名优秀工程师在Web 开发上最佳实践的积累,凝聚在了《Python Web 开发实战》这本书里,多维度、全面地介绍了PythonWeb 开发涉及的各种技术。更难能可贵的是,他还在这本书里留下了非常多关于这些技术的思索:为什么要使用某个技术?某个需求都有哪些技术可以满足?如何取舍?这种不仅要知其然,还要知其所以然的态度,是工程师快速成长必备的。

这样的一本书能够出版,对于国内的Python 开发者绝对是个福音。我向所有有兴趣使用Python 做Web 开发的开发者们,强烈推荐此书。

洪强宁

爱因互动CTO

前豆瓣首席架构师

前宜信大数据创新中心首席架构师


推荐序二

这篇序酝酿了好几天,今天终于动笔写下了第一个字。说实话,很久没有看到关于Python的好书了,尤其是国人自己的原创书。Web 开发本身就是一件很庞杂的事情,模板渲染、API 的开发、后端的部署,能在一本书中把这些问题都说清楚并不容易。作者伟明与我都出身豆瓣,虽然没有同时期在豆瓣工作过,但豆瓣的CODE 系统把我们俩联系到了一起。他是CODE 的三代目,通过CODE 里一行行Python 代码,仿佛知道了彼此的心意。感谢伟明把豆瓣的一些工程实践进行了整理和总结,这是本书最宝贵的一点。而本书的精华在于他对各种技术使用场景的探讨:那些库谁都会用,但在什么场景使用,在生产环境中这个库的表现到底如何,则不见得有认真的思考。期望将来还可以看到越来越多这样的图书,祝此书大卖。

清风

SAY CEO

前豆瓣技术总监


推荐序三

一次真诚的倾诉

自从CPyUG 列表订阅人数超过10,000 以后,我就认为中文的Python 学习资料足够多了,而最正确的自学姿势应该从官方文档开始。但是,《Python Web 开发实战》一书又改变了我这一偏见。

有道是:“出版是最好的记忆”,伟明亲身证实了这一点。作为一名普通的程序员,只从一个念头出发,独自写出了500 多页的技术图书,这实在是一件令人敬佩的事。凡是写过书,特别是写过技术图书的人都知道——写书,难的不是写什么,如何写,而是要耐得住寂寞!在中国生活原本就如此艰辛,无论上学还是工作,周围永远有无数同侪在竞争;而写书几乎是负收入的经济行为,特别是技术图书。当然,图书印刷出来,奉上对家人的感谢,是一种别样的程序员式的浪漫情怀,这种成就感不足为外人道矣。

伟明打动我,让我为他写推荐序,就在于他说自己写书的那个简单的初衷:让公司所有人都知道Web 开发究竟是什么样的,从而能更好地协同。这其实已经是佛陀流传经文普度众生的大情怀了!

Python 是如此活跃的一种语言,几乎伴随互联网的发生而创立,又伴随互联网的极速发展而繁荣,在Web 开发领域拥有全栈式的技术生态;又因为脚本语言以及其自身语言的人性化设计,通过Web 勾联到了几乎所有计算机应用领域,这也导致在特定问题上,Python 总是有一堆解决方案可以选择,而不像其他语言,只有一种方案。但是选择过多,其实也导致了学习成本的增加。

伟明将自身在Web 领域所有方面的经验提炼后整理成书,本质上是将几十个关联产品的官方文档,结合具体工程经验进行了梳理,给出了领域问题最佳方案的关键思考点和自己的答案,而更加可贵的是,给出了这些思考点的来源,以及形成过程,即给出了解决各种Web领域问题的思维模式。

从前后几个版本的书稿也可以看出,如果没有这本图书的艰苦整理,伟明自己也难以形成这种宏观+ 微观能同时作用的思考模式。所以,我一直认为:“输出是更加残酷的输入。”要将纷繁零散的经验,变成他人可以习得的技能,要组织成叙述合理、案例得当、结构清晰的图书,这个过程本身就得对自己的所有积累进行反复的再学习、解析和增补。其中的工作量远远不止这几百页书的内容。

更加奇妙的是,在没有这部书稿前,其实我们并不熟悉,只是在社区列表中见过邮箱名而已。但是,有了独有的知识成果后,伟明就有了立场,也有了动机和理由,邀请我以及类似洪教授/Limodou 这些中国Python 学习者的前辈来评点和审核书稿,获得直接的联系,即人脉。

所以,我在郑重推荐此书的内容之外,更加倡议大家向伟明学习——敢于写书,通过真诚的技术图书总结自己的过去,获得更好的未来,帮助更多的Pythonista。

Zoom.Quiet(大妈)

优视眼动科技CTO

Python 中文社区创始人之一及管理员

OBP 及蟒营工程设计者兼主持人


推荐序四

说起来给《Python Web 开发实战》一书写序还真是很突然。2016 年5 月30 日,我突然被拉到了一个微信群里,正觉得纳闷的时候,看到群里Zoom.Quiet 的介绍,才知道是怎么回事。原来《Python Web 开发实战》已经基本成书,让大家看一看。对于本书的作者董伟明,我们没有在线下交流过,但是对Python 的热爱时不时地会把大家通过某种方式吸引到一起。

这是一本原创图书,从书名来看是和Web 相关的,而Web 领域正好和我的兴趣以及平时的工作相关。作为一个开源Web 框架的开发者,自然对Web 开发的内容比较感兴趣,借由此书正好可以了解一下别人是如何理解以及如何实践Web 开发的,更何况作者还是豆瓣的工程师,因此对书的内容还是有一些期待。

经过一番阅读之后,我与伟明交流了一些看法,他给予了详细的解释与说明,我对他的写作思路也有了一些了解。对Web 开发的理解其实可以有很多角度,比如,从开发者的角度,这就会更多从具体的功能实现、框架使用来看待;从运维者的角度,会更多地从部署、维护、平台的角度来理解;从测试及质量的角度,会关心代码的测试性及代码审查;从框架开发者的角度,就要了解Web 开发涉及哪些领域,每一领域应该用什么技术与工具来组织,不同领域又如何通过某些框架来有机地结合在一起。仅凭一本书,想完全满足所有人的需求是非常困难的。

阅读本书,我最大的感受就是:全和新。

全指的是内容覆盖面较广。原本我以为作者会主要讲Flask 框架的开发,但其实Flask 框架在本书中的比重并不大,反而是与Web 相关的开发技术的介绍占了大部分的篇幅,甚至也包含了部署以及Python 本身的一些特性和工具。对此我也有疑问,并向作者咨询。Web 开发的概念其实太大了,不同的角度可以有不同的理解。比如我们常说的Web 框架,其实绝大部分都只涉及展示相关的开发,所以应该更精确地称之为Web 展示框架或Web 应用框架。但是它很有可能依赖底层的批处理、大数据处理等技术,这些虽然不能算纯粹的Web技术,但是却可以放在Web 开发这一概念下。因此如果把每一块与Web 开发相关的内容都写出来,那么本书的厚度就可想而知了。所以作者是从个人实践的角度出发,把他所理解的与Web 开发相关的技术尽可能全地,并且尽可能用更多的实例来讲述。之所以我会有“全”这个感受,因为书的内容涉及了Web 框架、Ajax 的前后端交互、测试、数据库、数据分析、服务化、部署、系统管理、常用工具等内容,有点百科全书的意味。

为什么说“新”,因为书中讲的许多东西都是现在正在流行的技术或工具,像Flask、Celery、Jupyter、Supervisor、SaltStack、Pandas 等。其中有些我还是第一次接触,说明作者平时接触的内容的确非常丰富,同时也结合了豆瓣的一些具体的实例,这样会更有借鉴意义。

全书的难度不是很大,内容广泛全面,不过因为篇幅所限,对于前端的技术介绍得不多,有些章节可能描述也不是太细。不过前端技术虽然也算是Web 开发技术,但是与Python 的关系就不那么紧密了,本书毕竟是一本Python 相关的书,所以涉及不多也是正常的。而且许多具体的技术本身内容都很丰富,也绝不是短篇幅可以说清楚的,所以反而有个基础性的介绍,在需要时自行学习可能更好。因此本书比较适合对于Web 开发有一定了解,但是希望了解更多Python Web 开发技术的读者。

非常感谢作者把自己的经验分享给大家。

李迎辉

Python 开源资深行者

Python-CN 邮件列表创建人

UliPad 和Uliweb 作者


展开
目录
第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
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证