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

Mais conteúdo relacionado

PDF
Servidor de Aplicação Web: CherryPy - Python
PDF
Django Módulo Básico Parte II
PDF
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
PDF
Cherrypy - um framework para desenvolvimento rápido de aplicações web
KEY
Python 08
PDF
Introdução à MEAN Stack
PDF
Api usando Silex
PPTX
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Servidor de Aplicação Web: CherryPy - Python
Django Módulo Básico Parte II
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Python 08
Introdução à MEAN Stack
Api usando Silex
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1

Mais procurados (20)

PDF
Como criar um plugin para WordPress
PDF
PHP Jedi - Boas Práticas e Alta Performance
PPTX
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
PDF
Doctrine2 Seminário PHP
PPTX
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
PDF
Minicurso de Django - Desenvolvimento ágil web com Django e Python
PPTX
PPTX
Workshop Django Framework - 30/10/2018
PPTX
JSPs Introdução Parte 1
ODP
Dependency injection
PPT
Python e Django
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
PPTX
Desenvolvimento de sistemas web com php Frameworks - Aula 1
PDF
PHP: Linguagem + Mysql + MVC + AJAX
PPTX
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
PPTX
JSPs Etiquetas
PDF
Aula03 PHP - Estruturas Condicionais
PPTX
Desenvolvimento de sistemas web com PHP Frameworks - Aula 4
PDF
PHP Aula 05 - E-mails, Cookies e Sessoes
Como criar um plugin para WordPress
PHP Jedi - Boas Práticas e Alta Performance
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
Doctrine2 Seminário PHP
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Workshop Django Framework - 30/10/2018
JSPs Introdução Parte 1
Dependency injection
Python e Django
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
Desenvolvimento de sistemas web com php Frameworks - Aula 1
PHP: Linguagem + Mysql + MVC + AJAX
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
JSPs Etiquetas
Aula03 PHP - Estruturas Condicionais
Desenvolvimento de sistemas web com PHP Frameworks - Aula 4
PHP Aula 05 - E-mails, Cookies e Sessoes
Anúncio

Semelhante a Python cherrypy (20)

PPT
Overview ITS SAP Web Dynpros version ECC
PDF
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
PDF
Desenvolvimento Web com Simfony Framework.
PPTX
Rest workshop
PDF
PyData - Consumindo e publicando web APIs com Python
PDF
2290494 integrando-flex-com-php
PDF
Ligação do Flex a um backend LAMP usando AMFPHP
PPTX
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
PPT
Web Sphere
PPTX
Workshop react + adonis.js
PDF
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
PPT
Desenvolvimento Mobile com Ruby
PDF
Desafio Rest API
PDF
PHP like a super hero
PDF
Curso de Ruby on Rails - Aula 01
KEY
Benchmarking Tools
KEY
Plack
PDF
Aula ASP.NET.pdf whatsap Whatsap pdf.com
PDF
Integração de sistemas legados com Plone
PPT
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Overview ITS SAP Web Dynpros version ECC
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Desenvolvimento Web com Simfony Framework.
Rest workshop
PyData - Consumindo e publicando web APIs com Python
2290494 integrando-flex-com-php
Ligação do Flex a um backend LAMP usando AMFPHP
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Web Sphere
Workshop react + adonis.js
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Desenvolvimento Mobile com Ruby
Desafio Rest API
PHP like a super hero
Curso de Ruby on Rails - Aula 01
Benchmarking Tools
Plack
Aula ASP.NET.pdf whatsap Whatsap pdf.com
Integração de sistemas legados com Plone
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Anúncio

Mais de antonio sérgio nogueira (20)

PDF
Doença do refluxo, sintomas e tratamento
PDF
Tonturas: informações e medidas de controle
PDF
Manual de Lavagem Nasal ou Irrigação Nasal
DOC
Montagem capota Montana 2008
DOCX
Montagem capota Saveiro 2010 correta sem gancho
DOCX
Montagem capota Saveiro 2010 correta sem gancho
DOCX
MOntagem capota Saveiro cross folha o1
DOCX
Montagem capota Saveiro cross coretissima fls 02
DOCX
Montagem capota Saveiro 1997
DOCX
montagem capota Strada simp estend-dupla novo 2014
DOCX
Montagem Capota Strada simples e est.perfil novo 2014
DOC
Montagem capota Mitsubshi antiga
DOCX
Montagem capota de Jeep
DOCX
Montagem Capota Hoggar peugeot
DOC
Montagem Capota Hilux ate 2001
DOC
Montagem capota S10
DOCX
Montagem capota Toro
DOC
Montagem Capota Fiat fiorino
DOC
Montagem capota F 250 e f-1000
DOCX
Montagem Capota Diversos montagem 2019
Doença do refluxo, sintomas e tratamento
Tonturas: informações e medidas de controle
Manual de Lavagem Nasal ou Irrigação Nasal
Montagem capota Montana 2008
Montagem capota Saveiro 2010 correta sem gancho
Montagem capota Saveiro 2010 correta sem gancho
MOntagem capota Saveiro cross folha o1
Montagem capota Saveiro cross coretissima fls 02
Montagem capota Saveiro 1997
montagem capota Strada simp estend-dupla novo 2014
Montagem Capota Strada simples e est.perfil novo 2014
Montagem capota Mitsubshi antiga
Montagem capota de Jeep
Montagem Capota Hoggar peugeot
Montagem Capota Hilux ate 2001
Montagem capota S10
Montagem capota Toro
Montagem Capota Fiat fiorino
Montagem capota F 250 e f-1000
Montagem Capota Diversos montagem 2019

Último (20)

PPT
HISTOLOGIA VEGETAL - tecidos vegetais.ppt
PDF
embriologia_animal_aula_share_2026_semestre
PPTX
GUERRAFRIA.pptdddddddddddddddddddddddddx
PDF
Organizador Curricular da Educação em Tempo Integral.pdf
PDF
Ementa 2 semestre PEI Orientação de estudo
PDF
saeb_documentos_de_referencia_versao_1.0.pdf
PDF
O retorno a origem (islã Islamismo)
PDF
A Revolução Francesa de 1789 slides história
PPTX
disciplulado curso preparatorio para novos
PPTX
HISTÓRIA DO BRASIL - anos de Democracia.pptx
PPTX
biossegurança e segurança no trabalho (6).pptx
PPTX
Slides Lição 7, CPAD, Uma Igreja Que Não Teme A Perseguição, 3Tr25.pptx
PPTX
Revolução Industrial - Aula Expositiva - 3U4.pptx
PDF
GESTÃO DA FASE PRÉ-ANALÍTICA- Recomendações da SBPC-ML (3).pdf
PPTX
Filosofia Ocidental Antiga 2025 - versão atualizada
PPTX
O Romantismo e a identidade brasileira..
PDF
A provisão de jojuador (ramadã) islamismo
PDF
Metabolismo_energético_3ano_pre_vest_2026.pdf
PPTX
Realismo e Naturalismo: Aluísio Azevedo.
PPTX
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
HISTOLOGIA VEGETAL - tecidos vegetais.ppt
embriologia_animal_aula_share_2026_semestre
GUERRAFRIA.pptdddddddddddddddddddddddddx
Organizador Curricular da Educação em Tempo Integral.pdf
Ementa 2 semestre PEI Orientação de estudo
saeb_documentos_de_referencia_versao_1.0.pdf
O retorno a origem (islã Islamismo)
A Revolução Francesa de 1789 slides história
disciplulado curso preparatorio para novos
HISTÓRIA DO BRASIL - anos de Democracia.pptx
biossegurança e segurança no trabalho (6).pptx
Slides Lição 7, CPAD, Uma Igreja Que Não Teme A Perseguição, 3Tr25.pptx
Revolução Industrial - Aula Expositiva - 3U4.pptx
GESTÃO DA FASE PRÉ-ANALÍTICA- Recomendações da SBPC-ML (3).pdf
Filosofia Ocidental Antiga 2025 - versão atualizada
O Romantismo e a identidade brasileira..
A provisão de jojuador (ramadã) islamismo
Metabolismo_energético_3ano_pre_vest_2026.pdf
Realismo e Naturalismo: Aluísio Azevedo.
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.

Python cherrypy

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