𝔖 Scriptorium
✦   LIBER   ✦

📁

Python Web开发实战

✍ Scribed by 董伟明


Publisher
电子工业出版社
Year
2016
Tongue
Chinese
Leaves
505
Category
Library

⬇  Acquire This Volume

No coin nor oath required. For personal study only.

✦ Synopsis


这本书涵盖了Web开发的方方面面,可以分为如下部分:

1. 使用最新的Flask 0.11进行Web开发,学习Jinja2、Flask-Script、Flask-Migrate、Flask-Security、Flask-Assets等8种常用扩展,帮助读者理解Flask 的 优秀设计(上下文、BluePrint等),最后利用Mako、Flask_mako、SQLAlchemy、Pillow等技术实现一个豆瓣一个真实的服务。

2. 阐述笔者对REST的理解,并提出一些设计API的注意事项,最后通过jQuery和fetch实现使用Ajax的例子,让读者了解如何让前后端通信。

3. 对Python应用服务器,Web服务器、缓存系统、键值对数据库等技术的选型和使用方法,最后演示大型网站架构及其重要组件的用意。

4. 使用Fabric、SaltStack、Ansible、Supervisor、Graphite等做系统管理,并演示一个通过最新的Sentry 8演示如何收集应用错误信息。

5. 测试和持续集成,最后使用最新的Buildbot 0.9实现一个Github项目的持续集成。

6. 深入RabbitMQ和Celery的原理和使用方法,最后分享笔者使用的进阶实践。

7. 服务化及豆瓣服务化实践。

8. 详细讲解豆瓣工程师都在用的DPark,包含安装、环境配置、使用和框架化分析uv&pv,接着将展示几个笔者实际工作中的数据报表需求,并讲解如何用Pandas做数据可视化。

9. 深入IPython和Jupyter Notebook这两个工具,并分享在豆瓣对应的实践。

10. 从获取Linux服务器的相关情况、性能测试、分析Python程序性能瓶颈三个方面展示对应的工具及使用方法。

11. 以抓取微信公众号文章为主线,分别使用多线程、多进程、Gevent、Future和asyncio这5种编程方式完成不同阶段的爬取任务,也深入地分析在它们之间如何选择。

12. Python进阶和Web项目经验。

封底推荐语

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

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

感谢伟明把豆瓣的一些工程实践进行了整理和总结,这是本书最宝贵的一点,库谁都会用,但在什么场景使用,在生产环境中这个库的表现到底如何,是这本书的一个精华,期望将来还可以看到越来越多这样的图书,祝此书大卖。

——清风,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, 腾讯工程师

✦ Table of Contents


扉页
版权页
推荐序一
推荐序二
推荐序三
推荐序四
业界热评
目录
1 初识Python Web开发
1.1 Python Web开发介绍
1.1.1 为什么应该选择Python作为Web开发语言
1.1.2 选择Python 2 还是Python 3
1.2 Web框架介绍
1.2.1 主流Web框架
1.2.2 小众的Web框架
1.2.3 选择Web框架时应遵循的原则
2 Web开发前的准备
2.1 搭建一个能运行的虚拟机环境
2.1.1 安装VirtualBox
2.1.2 使用Vagrant安装
2.1.3 使用Docker安装
2.2 包管理和虚拟环境
2.2.1 包管理
2.2.2 使用pip替代easy_install
2.2.3 distribute、distutils和setuptools
2.2.4 entry_points
2.2.5 插件系统
2.2.6 虚拟环境
2.2.7 virtualenv
2.2.8 virtualenv定制化
2.2.9 virtualenvwrapper
2.2.10 virtualenv-burrito
2.2.11 autoenv
2.3 进阶篇:pip高级用法
2.3.1 命令自动补全
2.3.2 普通用户安装
2.3.3 编辑模式
2.3.4 使用devapi作为缓存代理服务器
2.3.5 PYPI的完全镜像
3 Flask Web开发
3.1 Flask入门
3.1.1 安装Flask
3.1.2 从Hello World开始
3.1.3 配置管理
3.1.4 调试模式
3.1.5 动态URL规则
3.1.6 自定义URL转换器
3.1.7 HTTP 方法
3.1.8 唯一URL
3.1.9 构造 URL
3.1.10 跳转和重定向
3.1.11 响应
3.1.12 静态文件管理
3.1.13 即插视图
3.1.14 蓝图
3.1.15 子域名
3.1.16 命令行接口
3.2 模板
3.2.1 Jinja2
3.2.2 Mako
3.3 使用MySQL
3.3.1 安装MySQL和驱动
3.3.2 设置应用账号和权限
3.3.3 用MySQLdb写原生语句
3.3.4 事务提交和回滚
3.3.5 ORM简介
3.3.6 使用SQLAlchemy
3.3.7 使用ORM
3.3.8 数据库关联
3.3.9 在Flask中使用SQLAlchemy
3.3.10 记录慢查询
3.4 理解Context
3.4.1 本地线程
3.4.2 Werkzeug的Local
3.4.3 flask.request
3.4.4 使用上下文
3.4.5 使用LocalProxy替代g
3.5 从零开始实现一个文件托管服务
3.5.1 首页
3.5.2 重新设置图片页
3.5.3 下载页
3.5.4 预览页
3.5.5 短链接页
4 Flask 开发进阶
4.1 Flask的信号机制
4.1.1 Blinker的使用
4.1.2 Flask中内置的信号
4.1.3 自定义信号
4.1.4 信号订阅的高级用法
4.1.5 Flask-Login中的信号
4.2 Flask的扩展
4.2.1 Flask-Script
4.2.2 Flask-DebugToolbar
4.2.3 Flask-Migrate
4.2.4 Flask-WTF
4.2.5 Flask-Security
4.2.6 Flask-RESTful
4.2.7 Flask-Admin
4.2.8 Flask-Assets
4.3 Werkzeug的使用
4.3.1 DebuggedApplication
4.3.2 数据结构
4.3.3 功能函数
4.3.4 密码加密
4.3.5 中间件
5 REST和Ajax
5.1 什么是REST
5.2 RESTful API设计指南
5.2.1 使用名词来表示资源
5.2.2 关注请求头
5.2.3 合理使用请求方法和状态码
5.2.4 正确地使用REST
5.2.5 对输出的结果不再包装
5.2.6 不要做出错误的提示
5.2.7 使用嵌套对象序列化
5.2.8 版本
5.2.9 URI失效和迁移
5.2.10 信息过滤
5.2.11 速度限制
5.2.12 缓存
5.2.13 并发控制
5.3 使用Ajax
6 网站架构
6.1 Python应用服务器
6.1.1 WSGI协议
6.1.2 常见的WSGI容器
6.2 Web服务器Nginx
6.2.1 Web服务器与应用服务器的区别
6.2.2 为什么要选择Nginx
6.2.3 安装Nginx
6.2.4 使用Nginx部署Flask应用
6.3 缓存系统Memcached
6.3.1 Libmc安装配置
6.3.2 使用原生SQL缓存
6.3.3 缓存更新策略
6.3.4 Memcached使用的经验
6.4 键值对数据库Redis
6.4.1 操作Redis
6.4.2 Redis应用场景
6.4.3 分片和集群管理
6.5 NoSQL数据库MongoDB
6.5.1 为什么使用NoSQL
6.5.2 MongoDB
6.5.3 使用pymongo的例子
6.5.4 使用Mongoengine的例子
6.5.5 MongoDB实践经验
6.6 大型网站架构经验
6.6.1 缓存
6.6.2 负载均衡
6.6.3 高可用
6.6.4 业务拆分
6.6.5 集群
7 系统管理
7.1 进程管理Supervisor
7.1.1 Supervisor组件
7.1.2 配置Supervisor
7.1.3 使用Supervisor
7.2 应用部署Fabric
7.2.1 Fabric应用接口
7.2.2 使用Fabric管理Flask应用
7.3 配置管理工具SaltStack和Ansible
7.3.1 SaltStack
7.3.2 Ansible
7.4 使用Psutil
7.5 使用Sentry收集错误信息
7.5.1 安装配置Sentry
7.5.2 启动Sentry
7.5.3 创建团队和项目
7.5.4 配置SDK
7.6 使用StatsD、Graphite等搭建Web监控
7.6.1 配置Graphite
7.6.2 使用StatsD
7.6.3 配置Diamond
7.6.4 发布指标项
7.6.5 使用Grafana
7.6.6 使用Kenshin
8 测试和持续集成
8.1 使用unittest和doctest做测试
8.1.1 unittest
8.1.2 doctest
8.2 使用py.test和mock
8.2.1 py.test
8.2.2 mock
8.3 持续集成
8.3.1 使用Tox集成
9 消息队列和Celery
9.1 使用Beanstalkd
9.1.1 使用Beanstalkc
9.2 深入理解RabbitMQ
9.2.1 AMQP
9.2.2 虚拟主机
9.2.3 插件系统
9.2.4 通过Web和REST API管理RabbitMQ
9.2.5 故障转移
9.3 使用Celery
9.3.1 Celery的架构
9.3.2 Celery序列化
9.3.3 安装配置Celery
9.3.4 从一个简单的例子开始
9.3.5 指定队列
9.3.6 使用任务调度
9.3.7 任务绑定、记录日志和重试
9.3.8 在Flask应用中使用Celery
9.4 深入理解Celery
9.4.1 Celery的依赖
9.4.2 任务调用
9.4.3 信号系统
9.4.4 Worker管理
9.4.5 监控和管理Celery
9.4.6 子任务
9.5 进阶篇:Celery最佳实践
9.5.1 使用自动扩展
9.5.2 善用远程Debug
9.5.3 合理安排任务周期
9.5.4 合理使用队列和优先级
9.5.5 保证业务逻辑的事务性
9.5.6 关闭你不想要的功能
9.5.7 使用阅后即焚模式
9.5.8 善用Prefetch模式
9.5.9 善用工作流
10 服务化
10.1 为什么需要服务化
10.1.1 RPC框架
10.1.2 服务化带来的问题
10.1.3 微服务架构
10.2 使用Thrift
10.2.1 定义IDL文件
10.2.2 服务端实现
10.2.3 客户端实现
10.3 PIDL——豆瓣的服务化实践
10.3.1 PIDL架构
11 数据处理
11.1 使用MapReduce做日志分析
11.1.1 使用MapReduce
11.2 使用DPark
11.2.1 分布式文件系统MooseFS
11.2.2 Mesos
11.2.3 配置DPark环境
11.2.4 从WordCount开始
11.2.5 PV & UV统计
11.3 数据报表
11.3.1 发送带有样式和附件的邮件
11.3.2 创建xlsx文件
11.4 使用Pandas
11.4.1 Pandas入门
11.4.2 读取MySQL数据库
11.4.3 和Flask应用集成
12 帮助工具
12.1 IPython
12.1.1 IPython交互模式
12.1.2 常用的Magic函数
12.1.3 配置和自定义IPython
12.1.4 IPython的扩展系统
12.1.5 使用IPython调试复杂代码
12.1.6 双进程模型
12.1.7 并行计算
12.2 Jupyter Notebook
12.2.1 Notebook格式
12.2.2 Notebook格式转换和预览
12.2.3 为什么使用RequireJS
12.2.4 在Notebook里使用Echarts
12.2.5 富显示
12.2.6 自定义JavaScript和CSS样式
12.2.7 使用nbextension扩展Notebook
12.2.8 在Notebook上使用并行计算
12.3 调试和Debug工具
12.3.1 了解Linux服务器运行情况
12.3.2 性能测试
12.3.3 Python程序性能分析
12.3.4 性能调优实践
12.4 进阶篇:定制基于IPython的交互解释环境
12.5 进阶篇:豆瓣东西的Jupyter Notebook实践
13 Python并发编程
13.1 使用多线程
13.2 使用Gevent
13.3 使用多进程
13.4 使用Future
13.5 使用asyncio
13.5.1 async/await
13.5.2 Future
13.5.3 使用aiohttp
13.5.4 使用队列
14 Python进阶
14.1 使用标准库模块
14.1.1 errno
14.1.2 subprocess
14.1.3 contextlib
14.1.4 glob
14.1.5 operator
14.1.6 functools
14.1.7 collections
14.2 Python语法最佳实践
14.2.1 命名
14.2.2 使用join连接字符串
14.2.3 EAFP vs LBYL
14.2.4 定义类的__str__/__repr__方法
14.2.5 优美的Python
14.3 从Python 3移植
14.3.1 partialmethod
14.3.2 singledispatch
14.3.3 suppress
14.3.4 redirect_stdout/redirect_stderr
14.4 使用CFFI/Cython编写Python扩展
14.4.1 使用CFFI
14.4.2 使用Cython
14.5 进阶篇:使用PyObjC发送通知
15 Web开发项目实践
15.1 Web项目经验总结
15.1.1 开发流程
15.1.2 使用合理的项目结构
15.1.3 关注代码复杂度
15.2 代码质量保证工具
15.2.1 Pycodestyle对中文缩进的处理
15.2.2 Flake8
15.2.3 Pylint
15.2.4 其他代码质量保证工具
15.2.5 使用AST做静态检查
15.2.6 其他静态检查工具
15.2.7 编写Flake8扩展
15.3 代码评审的意义
15.3.1 作为被评审者
15.3.2 作为评审者
15.3.3 评审的标准


📜 SIMILAR VOLUMES


Flask Web开发:基于Python的Web应用开发实战
✍ [美] Miguel Grinberg 📂 Library 📅 2014 🏛 人民邮电出版社 🌐 Chinese

书签已装载, 书签制作方法请找 [email protected] 完全免费 本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的优秀参考书。 • 学习Flask应用的基本结构,编写示例应用; • 使用必备的组件,包括模板、数据库、Web表单和电子邮件支持; • 使用包和模块构建可伸缩的大型应用; • 实现用户认证、角色和个人资料; • 在博客网站中重用模板、分页显示列表以及使用富文本; • 使用基于Flask的REST式API,在智能手机、平板电脑和其他第三方客户端上实现可用功能; • 学习运行单元测试以及提升性

Flask Web开发:基于Python的Web应用开发实战
✍ Miguel Grinberg 📂 Library 📅 2014 🏛 人民邮电出版社 🌐 Chinese

<p>本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的优秀参考书。</p> <p>• 学习Flask应用的基本结构,编写示例应用;</p> <p>• 使用必备的组件,包括模板、数据库、Web表单和电子邮件支持;</p> <p>• 使用包和模块构建可伸缩的大型应用;</p> <p>• 实现用户认证、角色和个人资料;</p> <p>• 在博客网站中重用模板、分页显示列表以及使用富文本;</p> <p>• 使用基于Flask的REST式API,在智能手机、平板电脑和其他第三方客户端上实现可用功能;</p> <p>• 学习运行单元测试以及提升性能;</p> <

Python自动化开发实战
✍ 黄永祥 📂 Library 📅 2019 🏛 清华大学出版社 🌐 Chinese

<p>本书站在初学者的角度,从原理到实践,循序渐进地讲述了使用Python实现自动化开发的核心技术。全书从逻辑上可分为Python基础知识、Python自动化技术和自动化系统开发三部分。Python基础知识部分主要介绍Python的变量、数据类型、流程控制语句、函数与类等基础语法。Python自动化技术部分分别介绍网页、计算机系统、软件和手机的自动化技术,并将自动化技术与人工智能的计算机视觉结合使用,使自动化程序更为稳定和智能。自动化系统开发部分介绍如何开发一个统一调度和管理自动化程序的Web系统,通过该系统可实现分布式管理自动化程序的运行情况。</p> <p>本书由浅入深,注重实战,适用于

PHP Web安全开发实战
✍ 汤青松 📂 Library 📅 2019 🏛 清华大学出版社 🌐 Chinese

<p>全书共有6章内容,可分为四大部分:第一部分即第1章,主要介绍WEB安全环境问题与攻击者是如何挖掘的漏洞;第二部分既第2章,主要介绍WEB安全的常见漏洞,包括SQL注入、XSS、文件上传、CSRF等;第三部分既第3章,主要介绍介绍设计WEB业务时候比较常见的问题,包括验证码设计、支付设计、权限设计等。第四部分包含4~6章,主要介绍WEB服务器安全配置与安全编码相关的知识,包括LANMP的安全配置、数据加密、与安全漏洞检测等</p>

Django企业开发实战: 高效Python Web框架指南
✍ 胡阳 📂 Library 📅 2019 🏛 人民邮电出版社 🌐 Chinese

<p>本书以博客系统贯穿始末,介绍了Django的方方面面。书中共分四部分,第一部分介绍了正式进入编码之前的准备工作,内容包括需求分析、基础知识和Demo系统的开发;第二部分开始实现需求,内容涉及环境配置、编码规范以及项目结构规划,编写了Model层、admin页面、Form代码和View逻辑,引入了Bootstrap框架;第三部分重点介绍xadmin、django-autocomple-light和django-rest-framework等第三方插件;最后一部分介绍调试、优化、自动化部署以及压力测试等内容。</p>

物联网Python开发实战
✍ 安翔 📂 Library 📅 2018 🏛 电子工业出版社 🌐 Chinese

<p>本书在介绍物联网的组成、典型架构和应用的基础上,采用实例代码讲述 Python 编程基础和应用实例,包括用 Micropython 进行物联网单片机的开发、用 Python 开发物联网网关的方法、Python django 框架开发物联网Web 后台和前端知识及物联网常用通信方案 2G、Lora、Zigbee和物联网通信协议 MQTT、COAP 等,最重要的内容是通过一个完整的大型物联网项目实例讲解 Python 开发物联网的细节。并提供了项目源代码以及硬件开发板。</p>