python应用场景


python应用场景


1 web 应用

HTTP

Requests 文档

分布式系统

ZeroMQ

ØMQ(也被称作ZeroMQ, 0MQ 或 ZMQ)是一种高性能异步消息传递库,旨在应用于可扩展分布的或并发的应用。
它提供一个消息队列,但与面向消息的中间件不同,ØMQ系统可在不依赖专用消息代理的情况下运行。ØMQ旨在设计成为类似于socket风格的API。

RabbitMQ

RabbitMQ是一种使用了高级消息队列协议(AMQP)的开源消息代理软件。
RabbitMQ服务由Erlang编程语言写成,并构建在开放电信平台框架上,应用于集群和故障转移。


2 web 框架


WSGI

Web服务网关接口(Web Server Gateway Interface,简称“WSGI”)是一种在Web服务器 和Python Web应用程序或框架之间的标准接口。

通过标准化Web服务器和Python web应用程序 或框架之间的行为和通信,WSGI使得编写可移植的的Python web代码变为可能,使其能够部署在任何 ` 符合WSGI的web服务器 ` 上。


框架

Web框架包含一系列库和一个主要的处理器(handler)

URL路由(URL Routing)
    将输入的HTTP请求匹配到特定的Python代码用来调用
    
请求和响应对象(Request and Response Objects)
    封装来自或发送给用户浏览器的信息
    
模板引擎(Template Engine)
    能够将实现应用的Python代码逻辑和其要产生输出的HTML(或其他)分离开
    
Web服务器开发(Development Web Server)
    在开发机上运行HTTP服务器,从而快速开发;当文件更新时自动更新服务端代码

Django

功能齐备的web应用框架。它是创建面向内容网站的极佳选择

Flask

一款针对Python的“微型框架”,它是构建更小应用、API和web服务的极佳选择。

使用Flask构建应用,除了一些函数附上路由,它和写标准Python模块很相似

Falcon

构建快速、可扩展的REST风格API微服务

Tornado

是一个面向Python的异步web框架,它有自己的事件。 可以原生地支持WebSockets。

Pyramid

Pyramid 是一个非常灵活的框架,重点关注模块化


web 服务端

Nginx

是一个web服务器,并是HTTP、SMTP和其他协议的反向代理

它由其高性能、相对简洁以及对众多应用服务器(比如WSGI服务器)兼容而著名

它也拥有便利的特性, 比如负载均衡基本的认证等。

Nginx被设计为承载高负载的网站,并逐渐变得广为流行。

WSGI服务器

Gunicorn 
    (Green Unicorn,绿色独角兽)是一个纯Python WSGI服务器, 用来支持Python应用。不像其他Python web服务器,它有周全的用户界面,十分易于使用和配置。

uWSGI 用来构建全栈式的主机服务。
     除了进程管理、进程监控和其他功能外, uWSGI也能作为一个应用服务器,适用于多种编程语言和协议 - 包括Python和WSIG。


## 3 HTML 抓取 解析(结构化的xhtml)

Web抓取是使用计算机程序将web页面数据进行收集 并整理成所需格式,同时保存其结构的实践。

lxml + requests + xpath

lxml 是一个优美的扩展库,用来快速解析XML以及HTML文档 即使所处理的标签非常混乱
        
        page = requests.get('http://econpy.pythonanywhere.com/ex/001.html')
        tree = html.fromstring(page.text)
        
        #这将创建buyers的列表:
        buyers = tree.xpath('//div[@title="buyer-name"]/text()')
        #这将创建prices的列表:
        prices = tree.xpath('//span[@class="item-price"]/text()')
        
        print 'Buyers: ', buyers
        print 'Prices: ', prices
        Buyers:  ['Carson Busses', 'Earl E. Byrd', 'Patty Cakes',
        'Derri Anne Connecticut', 'Moe Dess', 'Leda Doggslife', 'Dan Druff',
        'Al Fresco', 'Ido Hoe', 'Howie Kisses', 'Len Lease', 'Phil Meup',
        'Ira Pent', 'Ben D. Rules', 'Ave Sectomy', 'Gary Shattire',
        'Bobbi Soks', 'Sheila Takya', 'Rose Tattoo', 'Moe Tell']
        
        Prices:  ['$29.95', '$8.37', '$15.26', '$19.25', '$19.25',
        '$13.99', '$31.57', '$8.49', '$14.47', '$15.86', '$11.11',
        '$15.98', '$16.27', '$7.50', '$50.85', '$14.26', '$5.68',
        '$15.00', '$114.07', '$10.09']


4 网络相关

Twisted

Twisted 是一款基于事件驱动的网络引擎框架。 支持创建基于不同网络协议的应用,包括 HTTP 服务器与客户端、SMTP 应用、POP3、IMAP 或 SSH 协议,即时通讯 等等。

PyZMQ

PyZMQ 是 ZeroMQ 的 Python捆绑库 (binding),ZeroMQ 是一款高效率的异步消息库,它的一个显著优点就是能 被用做消息队列且不需要消息代理。基本模式包括:

请求-回应模式:连接多个客户端与多个服务端,是远程过程调用和任务分配的模式。
发布-订阅模式:连接多个发布者和多个订阅者,是数据分配模式。
推-挽模式 (或管道模式) :连接多个步骤,包括循环的输入/输出端,是并行任务分配 和收集模式。

gevent

gevent 是一款基于协程的Python 网络库,它使用 greenlets 提供在 libev 事件循环之上的高层次异步API。


5 系统管理

Fabric

Fabric 是一个简化系统管理任务的库ChefPuppet倾向于关注管理服务器和系统库, 而Fabric更加关注应用级别的任务,比如说部署

Salt

Salt 是一个开源的基础管理工具。 它支持从中心节点(主要的主机)到多个主机(指从机)远程命令执行。 它也支持系统语句,能够使用简单的模板文件配置多台服务器。

Ansible

Ansible 是一个开源系统自动化工具。 相比于Puppet或者Chef最大的优点是它不需要客户机上的代理。 Playbooks是Ansible的配置、部署和编排语言,它用YAML格式编写,使用Jinja2作为模板。

Puppet

Puppet 是来自Puppet Labs的IT自动化和配置管理软件,允许系统管理员定义他们的IT基础设施状态, 这样就能够提供一种优雅的方式管理他们成群的物理和虚拟机器

Buy me a 肥仔水!