2015-10-27 3 views
15

Ich verwende gunicorn --workers 3 wsgi, um meine Flask App zu starten. Wenn ich die Variable application zu myapp ändere, gibt Gunicorn den Fehler AppImportError: Failed to find application: 'wsgi'. Warum erhalte ich diesen Fehler und wie behebe ich ihn?Gunicorn kann App nicht finden, wenn der Name von "Anwendung" geändert wurde

myproject.py:

from flask import Flask 

myapp = Flask(__name__) 

@myapp.route("/") 
def hello(): 
    return 'Test!' 

if __name__ == "__main__": 
    myapp.run(host='0.0.0.0') 

wsgi.py:

from myproject import myapp 

if __name__ == "__main__": 
    myapp.run() 

Antwort

32

Gunicorn (und die meisten WSGI-Server) Standardeinstellungen für die abrufbaren zu suchen namens application oder app in welchem ​​Modul Sie es zu zeigen. Durch einfaches Hinzufügen eines Alias ​​from myproject import myapp as application oder application = myapp kann Gunicorn die abrufbare Nachricht wieder finden.

Die wsgi.py Datei oder der Alias ​​werden jedoch nicht benötigt, Gunicorn kann direkt auf das reale Modul gerichtet und aufrufbar sein. Es gibt fast nie einen guten Grund, eine separate wsgi.py Datei zu haben.

gunicorn myproject:myapp --workers 16 
+4

Es kann Gründe geben, aber keiner von ihnen wendet das in der Frage angegebene Beispiel an. Die Einfachheit der Konfigurationsspezifikationen für Produktion und Entwicklung ist eins. –