Skip to main content

Introduzione

  • Questo articolo ti guida attraverso il processo di utilizzo di Gunicorn, un server HTTP WSGI per Python, per eseguire in produzione Flask, Django e altre applicazioni WSGI.
  • Prima di iniziare, assicurati di avere Python e Gunicorn installati nel tuo ambiente. Puoi installare Gunicorn usando il seguente comando:
  • Aggiungi gunicorn anche al tuo requirements.txt, così Square Cloud lo installa insieme alle altre dipendenze:
requirements.txt

Utilizzo di base

Per eseguire un’applicazione web Python usando Gunicorn, devi avere un’applicazione WSGI come flask, django o qualche altro framework.
Una volta che la tua applicazione è pronta, devi conoscere il nome del modulo e il nome della variabile che contiene l’oggetto dell’applicazione WSGI.
Per esempio, se hai un’applicazione Flask in un file chiamato app.py e l’istanza Flask si chiama app, puoi eseguirla con Gunicorn usando il seguente comando:
In questo comando:
  • python -m gunicorn esegue Gunicorn come modulo python.
  • --bind 0.0.0.0:80 indica a Gunicorn di ascoltare su tutte le interfacce di rete sulla porta 80.
  • app:app specifica il nome del modulo (app) e il nome della variabile (app) che contiene l’oggetto dell’applicazione WSGI.
Per Django, punta Gunicorn al modulo wsgi.py che Django crea all’interno del package del tuo progetto (sostituisci myproject con il nome del tuo progetto):

Esecuzione su Square Cloud

Inserisci il comando nel campo START del tuo file di configurazione, così Square Cloud avvia la tua applicazione con Gunicorn:
squarecloud.app
Gunicorn deve fare il bind su 0.0.0.0:80: Square Cloud consegna il traffico del tuo sottodominio alla porta 80 della tua applicazione. Square Cloud imposta anche la variabile d’ambiente PORT a 80, e Gunicorn la legge: senza l’opzione --bind, ascolta su 0.0.0.0:$PORT quando PORT è impostata.

Opzioni aggiuntive

Gunicorn offre diverse opzioni per personalizzare il suo comportamento. Qui ne mostreremo alcune.

Workers

  • --workers <number>
Questa opzione imposta il numero di processi worker per la gestione delle richieste. Ogni worker è un processo separato con la propria copia della tua applicazione in memoria, quindi su Square Cloud il limite di solito è la RAM, non la CPU. Inizia con 2 worker e aggiungine altri solo dopo aver aumentato MEMORY. Se la tua applicazione si arresta con LACK_OF_RAM, riduci il numero di worker.
Non dimensionare i worker con multiprocessing.cpu_count() o con la formula (2 x $num_cores) + 1: all’interno di un container, il numero di core può essere quello della macchina host, il che avvia decine di worker ed esaurisce la tua RAM.

Nome

  • --name <name>
  • -n <name>
Questa opzione imposta il nome del processo per Gunicorn.

Worker-class

  • --worker-class <class>
  • -k <class>
Questa opzione imposta il tipo di worker da utilizzare. Il valore predefinito è sync, ma puoi anche usare gevent, eventlet, tornado o altri tipi di worker.

Extra

Gunicorn ha molte altre opzioni e funzionalità che puoi esplorare nella documentazione ufficiale.

File di configurazione

  • Puoi anche impostare le opzioni di Gunicorn in un file di configurazione Python. Gunicorn carica automaticamente un file chiamato gunicorn.conf.py dalla directory in cui viene eseguito, che su Square Cloud è la radice del tuo progetto. Per qualsiasi altro nome di file, passalo con -c <file>.
gunicorn.conf.py
  • Con questo file nel tuo progetto, il campo START può essere semplicemente:
squarecloud.app

Prossimi passi

Flask

Fai il deploy di un’applicazione Flask dietro Gunicorn.

Django

Fai il deploy di un progetto Django dietro Gunicorn.

L'app non si avvia

Risolvi EADDRINUSE, LACK_OF_RAM e altri errori di avvio.

Ti è piaciuto questo articolo?

  • Abbiamo creato questo contenuto con grande cura per offrirti il miglior aiuto possibile. Gli sviluppatori hanno già valutato Square Cloud 4,9/5 su 402 recensioni su Google e Trustpilot: lascia anche tu la tua! Ci aiuta a capire cosa conta di più per te.

Google Reviews

Lascia la tua recensione su Google Reviews.

Trustpilot

Lascia la tua recensione su Trustpilot.