《Python Web开发实战》作者董伟明,由电子工业出版社出版。
基本介绍
- 书名:PythonWeb开发实战
- 作者:董伟明
- ISBN:978-7-121-29733-5
- 页数:516
- 定价:105
- 出版社:电子工业出版社
- 出版时间:2016年9月
- 开本:16
基本信息
作 译 者:董伟明
出版时间:2016-09
千 字 数:616
版 次:01-01
页 数:516
开 本:16开
I S B N :9787121297335
内容简介
本书按照一个Web 产品从无到有、从简单变複杂、从基础到进阶的过程,多角度、全方位讲述了Python Web开发。内容涉及Web框架、测试、资料库、讯息伫列、服务化、持续集成等,把网站工程的全貌展现在读者的眼前,从其中可以了解Web工程从开发到上线的完整流程。另外,作者对当前现在正在流行的技术或工具,如Flask、Celery、Jupyter、Supervisor、SaltStack、Pandas等都有较为详细的阐述,可作为技术选型时的参考。对于Web 开发者、使用Python 语言的运维工程师和运维开发工程师、想提高Python 技能的开发者、想了解Python 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
作者简介
董伟明,豆瓣高级产品开发工程师,主要负责豆瓣读书、电影、音乐、东西等产品线。从2011年开始接触Python, 从运维、运维开发到现在的Web开发,积累了丰富的运维和开发经验,作者积极参与开源项目,给IPython、pip及Python标準库等贡献过代码。这本书将作者这些年使用Python进行Web开发,对各方面知识的理解和积累的经验进行梳理和总结。