CherryPy
# CherryPy

CherryPy é um framework para desenvolvimento web orientado a objetos que utiliza a linguagem de programação Python. Ele é projetado para desenvolvimento ágil de aplicações web através do empacotamento do protocolo HTTP, porém permanecendo em um baixo nível e não oferecendo muito mais do que é definido no RFC 2616.
O CherryPy pode ser um servidor web propriamente dito ou ser executado através de qualquer ambiente WSGI compatível (incluindo o Apache 2). Ele não manipula tarefas como de template para gerar a apresentação, acesso backend ou protocolos de autenticação. O framework é extensível com filtros, interfaces simples compostas de sete funções. Estas são chamadas em pontos definidos no processamento de requisição/resposta.

## Interface Pythônica

Uma das metas do fundador do projeto, Remi Delon, foi tornar o CherryPy o mais pythônico possível. Isto permite ao desenvolvedor usar o framework com qualquer módulo Python regular e esquecer (do ponto de vista técnico) que a aplicação é para a web.
Por exemplo, o conhecido programa Alô Mundo com o CherryPy 3 pareceria com isto:

## Características

O CherryPy implementa:
* um servidor web com suporte à WSGI com thread (computação) e compatível com HTTP/1.1. Normalmente, o CherryPy por si mesmo leva apenas 1-2 ms por página.
* Suporte para qualquer outro servidor web ou adaptador habilitado com WSGI, incluindo Apache, IIS, lighttpd, ngInx, mod_python, FastCGI, SCGI e mod_wsgi.
* Um adaptador mod_python nativo.
* Vários servidores HTTP (por exemplo, em várias portas) em um.
* Um sistema de plugin. Plugins CherryPy encaixam em eventos dentro do processo do servidor - na inicialização do servidor, desligamento do servidor, fechamento do servidor, etc. - para executar código que precisa estar rodando quando o servidor inicia ou desliga.
* Ferramentas embutidas para caching, codificação, sessões, autorização, conteúdo estático e outros. Ferramentas CherryPy encaixam em eventos dentro do processo de requisição. Sempre que o servidor recebe um pedido CherryPy, existe um conjunto específico de etapas que ele atravessa para lidar com esse pedido. Manipuladores de páginas são apenas um passo no processo. As ferramentas também fornecem uma sintaxe e API de configuração para transformá-los dentro e fora de um conjunto específico de manipuladores.