Python – Webserver em um minuto

PythonSimpleHTTP_www.cleitonbueno.com

Já ouviram a seguinte frase “A ocasião faz o ladrão”, não roubei nada, mas aproveitei a oportunidade para levar vantagens com o Python.

Estou eu entregando uma solução que desenvolvi para um cliente, eis que algo acontece e o webserver dele cai, não sei se Tomcat ou Jetty, era algum destes webservers Java, parou!

Não estou aqui para falar mau deles, além do mais, admiro muito o Tomcat por exemplo ele é webserver do ScadaBR, muito menos o Jetty que é o webserver ou foi por muito tempo do Zimbra Webmail e são fantásticos, porém, neste momento aconteceu o inesperado.

E ae o pior, precisava subir uma pagina com “Estamos em manutenção”, “Estamos atualizando nossos servidores”, “Estamos passando por instabilidade” algo assim para assustar menos os cliente, porém era um servidor Linux :), porém não tinha acesso direto a internet e apenas liberação da porta X ao firewall, e o desenvolvedor não conseguiu instalar um apache2, lighttpd e companhia limitada.

E nessa oportunidade, eu disse que poderia ajudar, subindo um webserver na porta 80 com Python até eles resolverem, não vou falar de ferramentas poderosas como Flask, Tornado, Twisted mas do simples SimpleHTTPServer, lembrava que era simples fazer, mas não lembrava como, então acessei docs do Python SimpleHTTPServer e vi o exemplo de configuração, que segue abaixo.

Pedi para o desenvolvedor criar um index.html com algum conteúdo e executei a aplicação no mesmo local do arquivo html.

Você também por subir sem nenhum arquivo html, inserindo direto no código, com o seguinte exemplo.

E indo mais além você pode executar a aplicação como usuário comum, e o diretório com os .html e .css em outro local, com o exemplo abaixo:

O segredinho esta no self.path especificando o local com o index.html.

Não sabia se atenderia a necessidade das I/O’s do site com o trafego, o cliente ficou feliz, no outro dia falei com ele e disse que funcionou muito bem até eles resolverem e voltarem o site no ar, agradeceu imensamente.

Uma curiosidade, segue um teste benchmark que executei com o ab do apache2-utils com o apache2 na porta 80 e nosso simples webserver com Python em uma VM.

Ambos execute com o seguinte comando:

Apache2

 

SimpleHTTP(Python)

Esse Python só surpreende heim!

Nessa eu ganhei crédito com o cliente, estou compartilhando um caso real e ajudando a alguém mais que precisar a solucionar de forma simples e pratica para subir um webserver, quer algo mais potente em Python o SimpleHTTPServer não atende? Pesquise por Twisted ou Flask e se surpreenda.

 

Referências

https://docs.python.org/2/library/simplehttpserver.html

https://docs.python.org/2/library/socketserver.html

http://httpd.apache.org/docs/2.2/programs/ab.html

Share Button

CC BY-NC-SA 4.0 Python – Webserver em um minuto by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.