编辑推荐
null
内容简介
董伟明著的《Python Web开发实战》按照一个Web产品从无到有、从简单变复杂、从基础到进阶的过程,多角度、全方位讲述了Python Web开发。内容涉及Web框架、测试、数据库、消息队列、服务化、持续集成等,把网站工程的全貌展现在读者的眼前,从其中可以了解Web工程从开发到上线的完整流程。另外,作者对当前现在正在流行的技术或工具,如Flask、Celery、Jupyter、Supervisor、SaltStack、Pandas等都有较为详细的阐述,可作为技术选型时的参考。 对于Web开发者、使用Python语言的运维工程师和运维开发工程师、想提高Python技能的开发者、想了解PythonWeb开发的其他开发者,本书都适合阅读。
目 录
第1章 初识Python Web 开发 Python Web 开发介绍 为什么应该选择Python 作为Web 开发语言 选择Python 还是Python Web 框架介绍 主流Web 框架 小众的Web 框架 选择Web 框架时应遵循的原则 第2章 Web 开发前的准备 搭建一个能运行的虚拟机环境 安装VirtualBox 使用Vagrant 安装 使用Docker 安装 包管理和虚拟环境 包管理 使用pip 替代easy_install distribute、distutils 和setuptools entry_points 插件系统 虚拟环境 virtualenv virtualenv 定制化 virtualenvwrapper virtualenv-burrito autoenv 进阶篇:pip 高级用法 命令自动补全 普通用户安装 编辑模式 使用devapi 作为缓存代理服务器 PYPI 的完全镜像 第3章 Flask Web 开发 Flask 入门 安装Flask 从Hello World 开始 配置管理 调试模式 动态URL 规则 自定义URL 转换器 HTTP 方法 唯一URL 构造URL 跳转和重定向 响应 静态文件管理 即插视图 蓝图 子域名 命令行接口 模板 Jinja2 Mako 使用MySQL 安装MySQL 和驱动 设置应用账号和权限 用MySQLdb 写原生语句 事务提交和回滚 ORM 简介 使用SQLAlchemy 使用ORM 数据库关联 在Flask 中使用SQLAlchemy 记录慢查询 理解Context 本地线程 Werkzeug 的Local flaskrequest 使用上下文 使用LocalProxy 替代g 从零开始实现一个文件托管服务 首页 重新设置图片页 下载页 预览页 短链接页 第4章 Flask 开发进阶 Flask 的信号机制 Blinker 的使用 Flask 中内置的信号 自定义信号 信号订阅的高级用法 Flask-Login 中的信号 Flask 的扩展 Flask-Script Flask-DebugToolbar Flask-Migrate Flask-WTF Flask-Security Flask-RESTful Flask-Admin Flask-Assets Werkzeug 的使用 DebuggedApplication 数据结构 功能函数 密码加密 中间件 第5章 REST 和Ajax 什么是REST RESTful API 设计指南 使用名词来表示资源 关注请求头 合理使用请求方法和状态码 正确地使用REST 对输出的结果不再包装 不要做出错误的提示 使用嵌套对象序列化 版本 URI 失效和迁移 信息过滤 速度限制 缓存 并发控制 使用Ajax 第6章 网站架构 Python 应用服务器 WSGI 协议 常见的WSGI 容器 Web 服务器Nginx Web 服务器与应用服务器的区别 为什么要选择Nginx 安装Nginx 使用Nginx 部署Flask 应用 缓存系统Memcached Libmc 安装配置 使用原生SQL 缓存 缓存更新策略 Memcached 使用的经验 键值对数据库Redis 操作Redis Redis 应用场景 分片和集群管理 NoSQL 数据库MongoDB 为什么使用NoSQL MongoDB 使用pymongo 的例子 使用Mongoengine 的例子 MongoDB 实践经验 大型网站架构经验 缓存 负载均衡 高可用 业务拆分 集群 第7章 系统管理 进程管理Supervisor Supervisor 组件 配置Supervisor 使用Supervisor 应用部署Fabric Fabric 应用接口 使用Fabric 管理Flask 应用 配置管理工具SaltStack 和Ansible SaltStack Ansible 使用Psutil 使用Sentry 收集错误信息 安装配置Sentry 启动Sentry 创建团队和项目 配置SDK 使用StatsD、Graphite 等搭建Web 监控 配置Graphite 使用StatsD 配置Diamond 发布指标项 使用Grafana 使用Kenshin 第8章 测试和持续集成 使用unittest 和doctest 做测试 unittest doctest 使用pytest 和mock pytest mock 持续集成 使用Tox 集成 第9章 消息队列和Celery 使用Beanstalkd 使用Beanstalkc 深入理解RabbitMQ AMQP 虚拟主机 插件系统 通过Web 和REST API 管理RabbitMQ 故障转移 使用Celery Celery 的架构 Celery 序列化 安装配置Celery 从一个简单的例子开始 指定队列 使用任务调度 任务绑定、记录日志和重试 在Flask 应用中使用Celery 深入理解Celery Celery 的依赖 任务调用 信号系统 Worker 管理 监控和管理Celery 子任务 进阶篇:Celery 最佳实践 使用自动扩展 善用远程Debug 合理安排任务周期 合理使用队列和优先级 保证业务逻辑的事务性 关闭你不想要的功能 使用阅后即焚模式 善用Prefetch 模式 善用工作流 第10章 服务化 为什么需要服务化 RPC 框架 服务化带来的问题 微服务架构 使用ri 定义IDL 文件 服务端实现 客户端实现 PIDL——豆瓣的服务化实践 PIDL 架构 第11章 数据处理 使用MapReduce 做日志分析 使用MapReduce 使用DPark 分布式文件系统MooseFS Mesos 配置DPark 环境 从WordCount 开始 PV & UV 统计 数据报表 发送带有样式和附件的邮件 创建xlsx 文件 使用Pandas Pandas 入门 读取MySQL 数据库 和Flask 应用集成 第12章 帮助工具 IPython IPython 交互模式 常用的Magic 函数 配置和自定义IPython IPython 的扩展系统 使用IPython 调试复杂代码 双进程模型 并行计算 Jupyter Notebook Notebook 格式 Notebook 格式转换和预览 为什么使用RequireJS 在Notebook 里使用Echarts 富显示 自定义JavaScript 和CSS 样式 使用nbextension 扩展Notebook 在Notebook 上使用并行计算 调试和Debug 工具 了解Linux 服务器运行情况 性能测试 Python 程序性能分析 性能调优实践 进阶篇:定制基于IPython 的交互解释环境 进阶篇:豆瓣东西的Jupyter Notebook 实践 第13章 Python 并发编程 使用多线程 使用Gevent 使用多进程 使用Future 使用asyncio async/await Future 使用aiohttp 使用队列 第14章 Python 进阶 使用标准库模块 errno subprocess contextlib glob operator functools collections Python 语法最佳实践 命名 使用join 连接字符串 EAFP vs LBYL 定义类的__str__/__repr__ 方法 优美的Python 从Python 3 移植 partialmethod singledispatch suppress redirect_stdout/redirect_stderr 使用CFFI/Cython 编写Python 扩展 使用CFFI 使用Cython 进阶篇:使用PyObjC 发送通知 第15章 Web 开发项目实践 Web 项目经验总结 开发流程 使用合理的项目结构 关注代码复杂度 代码质量保证工具 Pycodestyle 对中文缩进的处理 Flake8 Pylint 其他代码质量保证工具 使用AST 做静态检查 其他静态检查工具 编写Flake8 扩展 代码评审的意义 作为被评审者 作为评审者 评审的标准
媒体评论
null