Python: Vorbereitung von Python und Flask für den Produktionseinsatz

Diese Dokumentation ist Teil des Erstellen einer REST-API-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Wie man eine REST-API mit Flask erstellt.

👋 Willkommen bei der Stackhero-Dokumentation!

Stackhero bietet eine einsatzbereite Python-Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:

  • Deployen Sie Ihre Anwendung in Sekundenschnelle mit einem einfachen git push.
  • Verwenden Sie Ihren eigenen Domainnamen und profitieren Sie von der automatischen Konfiguration von HTTPS-Zertifikaten für erhöhte Sicherheit.
  • Genießen Sie beruhigende automatische Backups, Ein-Klick-Updates und eine einfache, transparente und vorhersehbare Preisgestaltung.
  • Erhalten Sie optimale Leistung und robuste Sicherheit dank einer privaten und dedizierten VM.

Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Python-Cloud-Hosting-Lösung von Stackhero auszuprobieren!

Obwohl dieser Leitfaden den integrierten Entwicklungsserver von Flask verwendet, ist es für die Produktion unerlässlich, einen produktionsbereiten WSGI-Server wie Gunicorn zu verwenden. Befolgen Sie diese Schritte:

  1. Installieren Sie Gunicorn:

    pip install gunicorn
    pip freeze > requirements.txt
    
  2. Starten Sie Ihre App mit Gunicorn mit dem Argument app:app (wobei das erste app der Dateiname und das zweite app die Flask-Instanz ist):

    ENV=production gunicorn app:app \
      --error-logfile - \
      -b 0.0.0.0:8080
    
  3. Erstellen Sie ein Makefile, um das Umschalten zwischen Entwicklungs- und Produktionsmodus zu vereinfachen:

    .DEFAULT_GOAL := dev
    
    # Standardmäßig führt Stackhero für Python die Regel "run" aus. Wir überschreiben sie, um die 'prod'-Regel auszuführen.
    run: prod
    
    prod:
     	ENV=production gunicorn app:app \
     	  --error-logfile - \
     	  -b 0.0.0.0:8080
    
    dev:
     	python app.py
    

Sie können Ihren Server im Entwicklungsmodus mit make dev (oder einfach make) und im Produktionsmodus mit make prod ausführen.