Python: Preparar Python e Flask para produção

Esta documentação faz parte do guia Criação de uma API REST. Consulte o guia completo aqui: Guia passo a passo para construir uma API REST com Flask em Python.

👋 Bem-vindo à documentação da Stackhero!

A Stackhero disponibiliza uma solução Python cloud pronta a usar, concebida para simplificar o seu processo de deployment:

  • Implemente a sua aplicação em produção em segundos com um simples git push.
  • Utilize o seu próprio domínio, com configuração automática de certificado HTTPS para ligações seguras geridas por si.
  • Conte com backups automáticos, atualizações com um clique e preços previsíveis, para que se possa focar no seu código e não na gestão da infraestrutura.
  • Beneficie de elevada performance e segurança numa infraestrutura privada e dedicada. O seu ambiente está isolado e protegido.

Poupe tempo e simplifique o seu workflow: pode ter o seu código a funcionar com o alojamento Python cloud da Stackhero em apenas 5 minutos.

O servidor integrado do Flask é ótimo para desenvolvimento. Para produção, recomenda-se um servidor WSGI robusto como o Gunicorn. Veja como pode preparar-se:

  1. Instale o Gunicorn:

    pip install gunicorn
    pip freeze > requirements.txt
    
  2. Inicie a sua aplicação com o Gunicorn:

    ENV=production gunicorn app:app \
      --error-logfile - \
      -b 0.0.0.0:8080
    

    Aqui, app:app refere-se ao seu ficheiro (app.py) e à instância da aplicação Flask (app).

  3. Pode adicionar um Makefile para alternar facilmente entre os modos de desenvolvimento e produção:

    .DEFAULT_GOAL := dev
    
    # O Stackhero for Python executa por defeito a regra "run". Redefinimos para correr 'prod'.
    run: prod
    
    prod:
    	ENV=production gunicorn app:app \
    	  --error-logfile - \
    	  -b 0.0.0.0:8080
    
    dev:
    	python app.py
    

Pode iniciar o servidor em modo de desenvolvimento com make dev (ou simplesmente make), ou em modo de produção com make prod.