《Python Web开发实战》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:董伟明著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2016
  • ISBN:9787121297335
  • 页数:474 页
图书介绍:本书从无到有构建一个功能齐全的应用,作者以一个运维+后端+DBA+前端工程师的角度实现这个产品,同时还会讲解产品的测试、配置、部署、持续集成、打包上线,直到上线稳定, 让读者知道从写第一行代码开始到线上运行这个过程的各种细节。对于Web开发中经常遇到的障碍,比如,对于MVC、RESTful API,以及用到的相关服务的理解,有细致和深入的阐述,帮助Web开发者绕过这些坑,少走一些弯路。

第1章 初识Python Web开发 1

PythonWeb开发介绍 1

为什么应该选择Python作为Web开发语言 2

选择Python2还是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

从HelloWorld开始 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

RESTfulAPI设计指南 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和RESTAPI管理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

使用Thrift 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

使用join连接字符串 435

EAFPvsLBYL 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