Deploy app em Flask com Waitress

flask logo

Voltando às atividades depois de tanto tempo parado, hoje vou mostrar um post pequeno, mas que me foi útil há alguns dias para subir uma aplicação que criei com o microframework web Flask no ambiente de um cliente. Segue o fluxo…

Para rodar uma aplicação Flask o próprio framework oferece um web server básico interno para você fazer seus testes sem depender de componentes externos, com poucas linhas da pra botar o site de pé, olhá só:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Super simples né? Mas essa forma não é recomendada para ambientes de produção por não ser eficiente, nem estável, muito menos seguro, existe por conveniência na hora de desenvolver. O recomendado é executar em um web server do tipo WSGI HTTP.

Então de que forma devo publicar meu app? Existem diversas resposta para essa pergunta dependendo do SO onde você irá rodar, para ambientes UNIX o leque de opções é bem diversificado como gunicorn (Green Unicorn), uWSGI, Gevent, Twisted Web e outrs, não testei esses caras, estou apenas repassando. Já para ambiente Windows encontrei um equivalente ao gunicorn, o Waitress.

O código também é simples, a diferença é que passamos nosso “app” Flask para o “serve” do Waitress, o host e port podem ser modificados também, no meu pc rodo em 127.0.0.1:5000 mas geralmente ao publicar em um servidor você irá deixar no 0.0.0.0 porta 80.

from flask import Flask
from waitress import serve

app = Flask(__name__)
@app.route("/")
def hello():
 return "Hello World!"

if __name__ == "__main__":
  serve(app, host='0.0.0.0', port=80)

Uso bastante o Flask em algumas API’s que possuo mas tenho tentando estudar Django para poder comparar onde cada um se encaixa melhor e qual o mais adequado para cada projeto que preciso criar. O assunto é bem mais extenso que isso, cada servidor terá suas nuancias, mas espero que ajude alguém nos primeiros passo. Veja mais detalhes sobre deploy na doc do Flask aqui.

Fonte: http://flask.pocoo.org/docs/1.0/tutorial/deploy/

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s