Seite 1 von 1

Gunicorn findet Flask app nicht

Verfasst: Donnerstag 24. Januar 2019, 12:44
von tz_wuerzburg
Hallo Leute,
ich komme einfach nicht weiter.

Gegeben ist:
- Ununtu 18.04.1 LTS
- python 3.6.7
- nginx 1.14.0
- flask 1.0.2
- gunicorn 19.9.0

Python wurde mit venv in eine virtuelle Umgebung installiert.

Folgende Dateien wurden erstellt.

Flask (meinprojekt.py)

Code: Alles auswählen

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
        return "<h1 style='color:blue'>Hello There!</h1>"

if __name__ == "__main__":
        app.run(host='0.0.0.0') #ersetzt durch meine lokale Server IP
Gunicorn (wsgi.py)

Code: Alles auswählen

from meinprojekt import app
if __name__ == "__main__":
        app.run()
Aus dem Terminal kann Gunicorn mit dem gewünschten Ergebnis (Browser zeigt die Seite) gestartet werden:
gunicorn --bind 0.0.0.0:5000 wsgi:app

Was jetzt leider nicht funktioniert ist das einbinden als Systemdatei um automatisiert zu starten.
etc/systemd/system/meinprojekt.service

Code: Alles auswählen

[Unit]
Description=Gunicorn instance to serve meinprojekt
After=network.target

[Service]
User=mein_name
Group=www-data
WorkingDirectory=/home/meinname/meinprojekt
Environment="PATH=/home/mein_name/meinprojekt/meinprojektenv/bin"
ExecStart=/home/mein_name/meinprojekt/meinprojektenv/bin/gunicorn --workers 3 -bind unix.meinprojekt.sock -m 007 wsgi:app

[Install]
WantedBy=multi-user.target
Wird im Terminal der Status abgefragt (systemctl status meinprojekt) bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

● meinprojekt.service - Gunicorn instance to serve meinprojekt
   Loaded: loaded (/etc/systemd/system/meinprojekt.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2019-01-24 11:07:03 UTC; 32min ago
 Main PID: 1832 (code=exited, status=2)

Jan 24 11:07:02 isd_01 systemd[1]: Started Gunicorn instance to serve meinprojekt.
Jan 24 11:07:03 isd_01 gunicorn[1832]: usage: gunicorn [OPTIONS] [APP_MODULE]
Jan 24 11:07:03 isd_01 gunicorn[1832]: gunicorn: error: unrecognized arguments: wsgi:app
Jan 24 11:07:03 isd_01 systemd[1]: meinprojekt.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Jan 24 11:07:03 isd_01 systemd[1]: meinprojekt.service: Failed with result 'exit-code'.
Könnt Ihr mir weiterhelfen?

Re: Gunicorn findet Flask app nicht

Verfasst: Donnerstag 24. Januar 2019, 13:57
von __blackjack__
@tz_wuerzburg: Ändert sich etwas wenn Du ``--bind`` richtig angibst, mit *zwei* Minuszeichen‽

Re: Gunicorn findet Flask app nicht

Verfasst: Donnerstag 24. Januar 2019, 15:30
von tz_wuerzburg
Super, vielen Dank. Das hatte ich übersehen.

Trotzdem bekomme ich das ganze leider nicht zum laufen. Es gibt noch ein Problem mit dem unix.sock.
Müsste eigendlich eine unix.meinprojekt.sock Datei geschrieben werden? Kann diese nicht finden.

Folgende Fehlermeldung erhalte ich nun.

Code: Alles auswählen

● meinprojekt.service - Gunicorn instance to serve meinprojekt
   Loaded: loaded (/etc/systemd/system/meinprojekt.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2019-01-24 14:24:55 UTC; 3s ago
  Process: 1523 ExecStart=/home/meinname/meinprojekt/meinprojektenv/bin/gunicorn --workers 3 --bind unix.meinprojekt.sock -m 007 wsgi:app (code=exited, status=1/FAILURE)
 Main PID: 1523 (code=exited, status=1/FAILURE)

Jan 24 14:24:50 isd_01 systemd[1]: Started Gunicorn instance to serve meinprojekt.
Jan 24 14:24:50 isd_01 gunicorn[1523]: [2019-01-24 14:24:50 +0000] [1523] [INFO] Starting gunicorn 19.9.0
Jan 24 14:24:50 isd_01 gunicorn[1523]: [2019-01-24 14:24:50 +0000] [1523] [ERROR] Retrying in 1 second.
Jan 24 14:24:51 isd_01 gunicorn[1523]: [2019-01-24 14:24:51 +0000] [1523] [ERROR] Retrying in 1 second.
Jan 24 14:24:52 isd_01 gunicorn[1523]: [2019-01-24 14:24:52 +0000] [1523] [ERROR] Retrying in 1 second.
Jan 24 14:24:53 isd_01 gunicorn[1523]: [2019-01-24 14:24:53 +0000] [1523] [ERROR] Retrying in 1 second.
Jan 24 14:24:54 isd_01 gunicorn[1523]: [2019-01-24 14:24:54 +0000] [1523] [ERROR] Retrying in 1 second.
Jan 24 14:24:55 isd_01 gunicorn[1523]: [2019-01-24 14:24:55 +0000] [1523] [ERROR] Can't connect to ('unix.meinprojekt.sock', 8000)
Jan 24 14:24:55 isd_01 systemd[1]: meinprojekt.service: Main process exited, code=exited, status=1/FAILURE
Jan 24 14:24:55 isd_01 systemd[1]: meinprojekt.service: Failed with result 'exit-code'.

Re: Gunicorn findet Flask app nicht

Verfasst: Donnerstag 24. Januar 2019, 16:11
von __blackjack__
Also erst einmal versuchst Du da Dich mit der dem Rechner unix.meinprojekt.sock zu verbinden. Vielleicht wolltest Du nach unix einen Doppelpunkt statt eines einfachen Punktes‽ Der Teufel steckt im Detail. :-)

Re: Gunicorn findet Flask app nicht

Verfasst: Donnerstag 24. Januar 2019, 16:36
von tz_wuerzburg
Es ist manchmal nicht zu fassen. Ich sage lieber nicht, wie lange ich nach dem Fehler gesucht habe.
Tausend Dank!!!!

Für jeden, den das Thema interessiert empfehle ich diese Anleitung:
https://www.digitalocean.com/community/ ... untu-18-04
Wirklich top!

Ich hoffe das veröffentlichen, bzw. dass posten von solchen Links ist gestattet.

Re: Gunicorn findet Flask app nicht

Verfasst: Freitag 25. Januar 2019, 03:24
von noisefloor
Hallo,

ich sehe die Notwendigkeit des Datei wsgi.py nicht. Du kannst `app` doch aus `meinprojekt.py` importieren, dann hat Gunicorn auch den WSGI Einstiegspunkt. So wird es in der Flask-Doku auch gemacht: http://flask.pocoo.org/docs/dev/deployi ... tandalone/

Gruß, noisefloor