Your SlideShare is downloading. ×
0
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Python cherrypy
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Python cherrypy

1,174

Published on

CherryPy servidor web escrito em Python

CherryPy servidor web escrito em Python

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,174
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
50
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Servidor de aplicação WEB <ul><li>Simples e Poderosa biblioteca Python para desenvolvedores WEB </li></ul><ul><li>Pontos Fortes – simplicidade, auto-contido(só usa Python), não intrusivo (não precisamos ficar fazendo suposições de uso), software aberto a discussões </li></ul><ul><li>Em windows basta instalar o software no diretório Python(versão 2.4 em diante) </li></ul><ul><li>Servidor de aplicação WEB – Interface que lida com o protocolo HTTP + componente que hospeda uma ou mais aplicações (servidor WEB + servidor de aplicação) </li></ul>
  • 2. Servidor de aplicação WEB <ul><li>Servidor WEB – Apache -&gt; CherryPy roda no Apache </li></ul><ul><li>Servidor de Aplicação -&gt; responsável pela infra-estrutura para rodar aplicação (middleware – segurança, balanceamento,tratamento de exceções) </li></ul><ul><li>J2EE, JBOSS – roda Java, IIS – windows </li></ul><ul><li>CherryPy – roda no seu próprio servidor </li></ul>
  • 3. Servidor de aplicação WEB <ul><li>1a. Aplicação WEB – Alô Mundo (alomundo.py) </li></ul><ul><li># -*- coding:iso-8859-1 -*- </li></ul><ul><li>import cherrypy </li></ul><ul><li>class AloMundo: </li></ul><ul><li>def index(self): </li></ul><ul><li>return “Alô Mundo” </li></ul><ul><li>index.exposed=True </li></ul><ul><li>cherrypy.quickstart(AloMundo()) </li></ul><ul><li>Como executar: python alomundo.py </li></ul><ul><li>Browser: http://localhost:8080/ </li></ul>
  • 4. Servidor de aplicação WEB <ul><li>Servidor é iniciado na porta: 8080 </li></ul><ul><li>Método index() - mapeia o site raiz </li></ul><ul><li>Classe AloMundo define um método index que será exposto e o servidor chama AloMundo.index() - similar a página index.html para servidores normais </li></ul><ul><li>Objeto publicad o – qualquer objeto agregado a página principal – significa que pode ser publicado </li></ul><ul><li>Expor Objetos – feito através do atributo exposed </li></ul>
  • 5. Servidor de aplicação WEB <ul><li>Expondo o objeto correto </li></ul><ul><li>Para cada URI (identificador uniforme de recursos) apenas um objeto pode ser chamado e o resultado é uma página que pode ser estática ou dinâmica (página dinâmica resultado do processamento de uma aplicação). Isso em CherryPy é habilitado através de: </li></ul><ul><li>- index.exposed </li></ul><ul><li>- @cherrypy.expose # decorator </li></ul><ul><li>- exposed=True (métodos especiais __call__) </li></ul>
  • 6. Servidor de aplicação WEB <ul><li>Definindo o objeto correto – o mapeamento do CherryPy é simples. </li></ul><ul><li>root=AloMundo() </li></ul><ul><li>root.PaginaUm=UmaPag() </li></ul><ul><li>root.OutraPag=OutraPag() </li></ul><ul><li>root.OutraPag.Pagina=Pagina() </li></ul>
  • 7. Servidor de aplicação WEB #-*-coding:iso-8859-1-*- import cherrypy class PaginaUm: def index(self): return &amp;quot;Página um&amp;quot; index.exposed=True def pagina(self): return &amp;quot;página&amp;quot; pagina.exposed=True class OutraPag: @cherrypy.expose def index(self): return &amp;quot;Outra Página&amp;quot; class PaginaDois: def index(self): return &amp;quot;Página dois&amp;quot; index.exposed=True class AloMundo: paginaum=PaginaUm() outrapag=OutraPag() paginadois=PaginaDois() @cherrypy.expose def index(self): return &amp;quot;Alô Mundo&amp;quot; cherrypy.quickstart(AloMundo()) #root
  • 8. Servidor de aplicação WEB - login #-*-coding:iso-8859-1 -*- import cherrypy class PaginaUm(object): @cherrypy.expose def index(self): return &amp;quot;Página Um&amp;quot; class alomundo: def index(self): return &amp;quot;&amp;quot;&amp;quot;&lt;form action=&amp;quot;doLogin&amp;quot; method=&amp;quot;post&amp;quot;&gt; &lt;p&gt;Usuário&lt;/p&gt; &lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;username&amp;quot; value=&amp;quot;&amp;quot; size=&amp;quot;15&amp;quot; maxlength=&amp;quot;40&amp;quot;/&gt; &lt;p&gt;Senha&lt;/p&gt; &lt;input type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; value=&amp;quot;&amp;quot; size=&amp;quot;10&amp;quot; maxlength=&amp;quot;40&amp;quot;/&gt; &lt;p&gt;&lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Login&amp;quot;/&gt;&lt;/p&gt; &lt;p&gt;&lt;input type=&amp;quot;reset&amp;quot; value=&amp;quot;Clear&amp;quot;/&gt;&lt;/p&gt; &lt;/form&gt;&amp;quot;&amp;quot;&amp;quot; index.exposed=True def doLogin(self,username=None,password=None): return &amp;quot;Olá &amp;quot;+username+&amp;quot; &amp;quot;+password doLogin.exposed=True paginaum=PaginaUm() cherrypy.quickstart(alomundo())
  • 9. Servidor de aplicação WEB <ul><li>Passando parâmetros pela página </li></ul><ul><li># -*- coding: cp1252 -*- </li></ul><ul><li>import cherrypy </li></ul><ul><li>class Root(object): </li></ul><ul><li>def default(self,nome): </li></ul><ul><li>return &amp;quot;Alô &amp;quot;+nome </li></ul><ul><li>default.exposed=True </li></ul><ul><li>def index(self): </li></ul><ul><li>return &amp;quot;Alô&amp;quot; </li></ul><ul><li>index.exposed=True </li></ul><ul><li>cherrypy.quickstart(Root()) </li></ul>
  • 10. Servidor de aplicação WEB <ul><li>Arquivo de configuração </li></ul><ul><li>Arquivo configuração Arquivo programa </li></ul><ul><li>#arquivo global.cfg </li></ul><ul><li>[global] </li></ul><ul><li>server.socket_port=8001 </li></ul><ul><li>server.thread_pool=10 </li></ul>#arquivo programa # -*- coding: cp1252 -*- import cherrypy class Root(object): def default(self,nome): return &amp;quot;Alô &amp;quot;+nome default.exposed=True def index(self): return &amp;quot;Alô&amp;quot; index.exposed=True cherrypy.config.update(&apos;global.cfg&apos;) cherrypy.quickstart(Root())
  • 11. Servidor de aplicação WEB <ul><li>Estrutura do Cherrypy </li></ul><ul><li>cherrypy.engine – controle </li></ul><ul><li>cherrypy.server -servidor HTTP </li></ul><ul><li>cherrypy.request – requisição do HTTP </li></ul><ul><li>cherrypy.session - mapeamento </li></ul><ul><li>cherrypy.response – dados para construir resposta HTTP </li></ul>
  • 12. Servidor de aplicação WEB <ul><li>Módulos da Biblioteca CHERRYPY </li></ul><ul><li>- Autocarga – carrega o servidor quando a aplicação é modificada – arquivo de configuração </li></ul><ul><li>[global] </li></ul><ul><li>server.environment=”production” </li></ul><ul><li>engine.autoreload_on=True </li></ul><ul><li>engine.autoreload_frequency=5 </li></ul><ul><li>-Caching – melhora desempenho guardando na memória dados da aplicação e do cliente </li></ul>
  • 13. Servidor de aplicação WEB <ul><li>-Módulo de análise – mostra no browser o funcionamento do sistema, desta forma é possível evitar gargalos </li></ul><ul><li>-Módulo de codificação e decodificação – manipula diversos tipos de caracteres </li></ul><ul><li>- Módulo HTTP – classes e funções para manipular cabeçalhos e entidades HTTP </li></ul><ul><li>- Módulo Httpath – esquema de autenticação criptografado </li></ul><ul><li>- Profiler – interface checagem da performance </li></ul><ul><li>- Módulo Sessão – responsável pela persistência dos dados ( RAM, File System, Relational Database) </li></ul>
  • 14. Servidor de aplicação WEB <ul><li>-Módulo estático – trabalha com arquivos tipo CSS e imagens </li></ul><ul><li>-Módulo Tidy – checar se o código gerado pela aplicação é válido. </li></ul><ul><li>-Módulo Wsgiapp- permite que qualquer aplicação WSGI use cherrypy.(Web Server Gateway Interface – define uma simples e universal interface entre servidor web e aplicação web para linguagem Python) </li></ul><ul><li>- Módulo XML-RPC – permite transformar objeto publicado neste serviço.(RPC-remote procure call chamada de processo remoto) </li></ul>
  • 15. Servidor de aplicação WEB <ul><li>-Tools – permite a execução de módulos de terceiros. </li></ul><ul><li>- Erros e exceções – erros e exceções geram mensagens HTTP 5XX- erros servidor 4XX-erros clientes </li></ul>import cherrypy class Root: @cherrypy.expose @cherrypy.tools.encode(encoding=&amp;quot;iso-8859-1&amp;quot;) def index(self): raise NotImplementedError,&amp;quot;isto é erro...&amp;quot; if __name__==&apos;__main__&apos;: cherrypy.quickstart(Root(),&apos;/&apos;) http://localhost:8080/ - erro servidor http://localhost:8080/pagina - erro cliente
  • 16. Servidor de aplicação WEB <ul><li>Aplicação Arquivos Estáticos </li></ul># -*- coding: iso-8859-1 -*- import cherrypy import os.path class HelloWorld: def index(self): return &apos;&apos;&apos; &lt;html&gt; &lt;head&gt; &lt;title&gt;Alinhando Imagens&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;Alinhamento de Imagens&lt;/h1&gt; &lt;p&gt;Alinhamento a Esquerda&lt;br&gt; &lt;img src=&amp;quot;imagem&amp;quot; &gt;&lt;br&gt; &lt;/body&gt; &lt;/html&gt; &apos;&apos;&apos; index.exposed = True current_dir = os.path.dirname(os.path.abspath(__file__)) conf = {&apos;/&apos;: {&apos;tools.staticfile.root&apos;: current_dir}, &apos;/imagem&apos;: {&apos;tools.staticfile.on&apos;: True, &apos;tools.staticfile.filename&apos;: &apos;ninfeias.jpg&apos;}} cherrypy.quickstart(HelloWorld(), config=conf)
  • 17. Servidor de aplicação WEB <ul><li>Aplicação final apostila Cherrypy </li></ul><ul><li>OBRIGADO </li></ul>

×