书籍详情

Python Web开发实战

Python Web开发实战

作者:董伟明

出版社:电子工业出版社

出版时间:2016-09-01

ISBN:9787121297335

定价:¥105.00

购买这本书可以去
内容简介
  《Python Web开发实战》按照一个Web 产品从无到有、从简单变复杂、从基础到进阶的过程,多角度、全方位讲述了Python Web 开发。内容涉及Web 框架、测试、数据库、消息队列、服务化、持续集成等,把网站工程的全貌展现在读者的眼前,从其中可以了解Web 工程从开发到上线的完整流程。另外,作者对当前现在正在流行的技术或工具,如Flask、Celery、Jupyter、Supervisor、SaltStack、Pandas 等都有较为详细的阐述,可作为技术选型时的参考。对于Web 开发者、使用Python 语言的运维工程师和运维开发工程师、想提高Python 技能的开发者、想了解Python Web 开发的其他开发者,《Python Web开发实战》都适合阅读。
作者简介
  董伟明,豆瓣高级产品开发工程师,主要负责豆瓣读书、电影、音乐、东西等产品线。从2011年开始接触Python, 从运维、运维开发到现在的Web开发,积累了丰富的运维和开发经验,作者积极参与开源项目,给IPython、pip及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
猜您喜欢

读书导航