Python: Preparare Python e Flask per il deployment in produzione

Questa documentazione fa parte della guida Creazione di una REST API. Consulta la guida completa qui: Guida passo-passo per costruire una REST API con Flask in Python.

👋 Benvenuto nella documentazione di Stackhero!

Stackhero offre una soluzione Python cloud pronta all'uso, progettata per semplificare il processo di deployment:

  • Distribuisci la tua applicazione in produzione in pochi secondi con un semplice git push.
  • Utilizza il tuo nome di dominio, con configurazione automatica del certificato HTTPS per connessioni sicure gestite direttamente da noi.
  • Affidati a backup automatici, aggiornamenti con un clic e prezzi prevedibili, così puoi concentrarti sul tuo codice invece che sulla gestione dell'infrastruttura.
  • Approfitta di elevate prestazioni e sicurezza su un'infrastruttura privata e dedicata. Il tuo ambiente è isolato e protetto.

Risparmia tempo e semplifica il tuo workflow: il tuo codice può essere operativo con il Python cloud hosting di Stackhero in soli 5 minuti.

Il server integrato di Flask è ottimo per lo sviluppo. In produzione, è consigliabile utilizzare un server WSGI robusto come Gunicorn. Ecco come potete prepararvi:

  1. Installate Gunicorn:

    pip install gunicorn
    pip freeze > requirements.txt
    
  2. Avviate la vostra app con Gunicorn:

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

    Qui, app:app fa riferimento al vostro file (app.py) e all'istanza dell'applicazione Flask (app).

  3. Potete aggiungere un Makefile per passare facilmente dalla modalità sviluppo a quella produzione:

    .DEFAULT_GOAL := dev
    
    # Stackhero for Python esegue di default la regola "run". La sovrascriviamo per lanciare 'prod'.
    run: prod
    
    prod:
    	ENV=production gunicorn app:app \
    	  --error-logfile - \
    	  -b 0.0.0.0:8080
    
    dev:
    	python app.py
    

Potete avviare il server in modalità sviluppo con make dev (o semplicemente make), oppure in modalità produzione con make prod.