2016-04-07 10 views
0

Ich versuche, meinen Flask app unter uwsgi und sind immer zu laufen:Probleme laufen Flask app unter uwsgi

unable to load app 0 (mountpoint='') (callable not found or import error) 
*** no app loaded. going in full dynamic mode *** 

Das Layout ist:

/opt/myapp 
/opt/myapp/wsgi.py 
/opt/myapp/run.py 
/opt/myapp/lib 
/opt/myapp/app 
/opt/myapp/app/blueprints.py 
/opt/myapp/app/filters 
/opt/myapp/app/filters/__init__.py 
/opt/myapp/app/__init__.py 
/opt/myapp/app/main.py 

app/__init__.py enthalten die üblichen:

from flask import Flask 
app = Flask(__name__) 

app/main.py sieht aus wie:

import blueprints 
import filters 

from app import app 

def run(debug, host='0.0.0.0'): 
    app.run(debug=debug, host=host) 

wsgi.py wie folgt aussieht:

if __name__ == '__main__': 
    from app.main import app as application 
    application.run(host='0.0.0.0') 

Wenn ich python wsgi.py vom CLI laufen, es funktioniert gut, die üblichen :5000 Server.

Wenn ich laufen:

uwsgi --socket 0.0.0.0:8080 --protocol=http -w wsgi 

ich den Fehler sehen, kann es nicht die Anwendung laden.

+0

Der Betrogene ist das erste Ergebnis, das nach dieser Fehlermeldung sucht. – davidism

Antwort

2

uwsgi Importe Ihre wsgi.py . So wird dieser Code nie ausgeführt:

if __name__ == '__main__': 
    from app.main import app as application 
    application.run(host='0.0.0.0') 

Sie sollten die Anwendung auf Modulebene erstellen:

from app.main import app as application 

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

Sie müssen natürlich die .run() Methode innerhalb des Hauptblocks verlassen, weil Sie uwsgi nicht wollen um das auszuführen.

-1

Haben Sie etwas versuchen, wie ...

uwsgi -s 0.0.0.0:8080 --protocol=http --module myapp --callable app

Ich bin nicht 100% sicher, dass die --module und --callable Optionen richtig sind, weil ich Ihren eigentlichen Code nicht in vor mir, könnte etwas sein wie --module myapp.app --callable main oder eine andere Variante

Aus der Dokumentation zur Verwendung von uwsgi zusammen.

http://flask.pocoo.org/docs/0.10/deploying/uwsgi/

-1

Wenn es in virtualenv ist Sie haben es zu aktivieren, indem Sie fügte hinzu:

execfile(activate_this, dict(__file__=activate_this)) 

Und ich denke, Sie sollten Projektverzeichnis definieren:

import sys 

sys.path.append('/opt/myapp/app') 
Verwandte Themen