• PythonWeb开发实战


    PythonWeb开发实战

    一次真诚的倾诉

    业界热评

    为什么写这本书

    谁应该看本书

    为什么值得看

    本书的特别用法

    本书的组织方式和阅读建议

    使用代码示例

    反馈和勘误

    1 初识Python Web开发

    Python Web开发介绍

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

    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
    flask.request
    使用上下文
    使用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

    使用py.test和mock

    py.test
    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框架
    服务化带来的问题
    微服务架构

    使用Thrift

    定义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扩展

    代码评审的意义

    作为被评审者
    作为评审者
    评审的标准

    思维导图

    PythonWeb开发实战

    防止博客图床图片失效,防止图片源站外链:

    http://www.processon.com/chart_image/5e5b4b0de4b02bc3ad6a32af.png)

    思维导图在线编辑链接:

    https://www.processon.com/view/5e5b4b0de4b02bc3ad6a32ac

  • 相关阅读:
    LVS的DR模式测试案例<仅个人记录>
    awk命令小结
    iptables命令提取总结,包含扩展模块<取自朱双印博客>
    如何配置nginx屏蔽恶意域名解析指向《包含隐藏nginx版本号》
    CentOS升级OpenSSL至OpenSSL 1.1.0f版本<其中有遇到libcrypto.so的问题>
    U-Mail企业邮箱如何导入授权文件
    Linux花生壳使用篇
    windows远程桌面连接时,显示发生身份验证错误,给函数提供的身份无效
    批量屏蔽符合条件的IP地址,支持添加白名单,IP段,增量,大于指定次数的IP
    rsync 定时备份<crontab+backrsync.sh> 简陋版
  • 原文地址:https://www.cnblogs.com/jingle1267/p/13438888.html
Copyright © 2020-2023  润新知