Python: Preparar Python y Flask para despliegue en producción

Esta documentación forma parte de la guía Creación de una API REST. Consulte la guía completa aquí: Guía paso a paso para construir una API REST con Flask en Python.

👋 ¡Bienvenido a la documentación de Stackhero!

Stackhero ofrece una solución Python en la nube lista para usar, diseñada para agilizar su proceso de despliegue:

  • Despliegue su aplicación en producción en segundos con un simple git push.
  • Utilice su propio nombre de dominio, con configuración automática del certificado HTTPS para conexiones seguras gestionadas por nosotros.
  • Cuente con copias de seguridad automáticas, actualizaciones con un solo clic y precios predecibles, para que pueda centrarse en su código y no en la gestión de la infraestructura.
  • Disfrute de un alto nivel de rendimiento y seguridad en una infraestructura privada y dedicada. Su entorno está aislado y protegido.

Ahorre tiempo y simplifique su flujo de trabajo: puede tener su código funcionando con el hosting Python en la nube de Stackhero en solo 5 minutos.

El servidor integrado de Flask es ideal para desarrollo. Para producción, es recomendable utilizar un servidor WSGI robusto como Gunicorn. Así puede prepararlo:

  1. Instale Gunicorn:

    pip install gunicorn
    pip freeze > requirements.txt
    
  2. Inicie su aplicación con Gunicorn:

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

    Aquí, app:app hace referencia a su archivo (app.py) y a la instancia de la aplicación Flask (app).

  3. Puede añadir un Makefile para alternar fácilmente entre los modos de desarrollo y producción:

    .DEFAULT_GOAL := dev
    
    # Stackhero for Python ejecuta la regla "run" por defecto. La sobrescribimos para lanzar 'prod'.
    run: prod
    
    prod:
    	ENV=production gunicorn app:app \
    	  --error-logfile - \
    	  -b 0.0.0.0:8080
    
    dev:
    	python app.py
    

Puede iniciar el servidor en modo desarrollo con make dev (o simplemente make), o en modo producción con make prod.