Ich stehe vor einer WSCI-Ausnahme beim Ausführen meiner Flasche Anwendungscode auf dem Server.WSGI-Anwendung ausgelöst eine Ausnahme
Hier mein manage.py ist
from app import app1, db
from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand
migrate = Migrate(app1, db)
manager = Manager(app1)
manager.add_command('db', MigrateCommand)
def make_shell_context():
return dict(app=app1, db=db)
manager.add_command("shell", Shell(make_context=make_shell_context))
if __name__ == '__main__':
manager.run()
und app.py
app1 = Flask(__name__)
app1.config.from_object(config['default'])
rest_api = Api(app1)
db = SQLAlchemy(app1)
bcrypt = Bcrypt(app1)
from app import routes
Compress(app1)
assets = Environment(app1)
define_assets(assets)
cache = Cache(app1,config={'CACHE_TYPE': 'simple'})
In meinem lokalen, gibt es keinen Fehler. Ich starte meine Anwendung mit diesem python manage.py runserver
Befehl.
Nun, im Server habe ich erfolgreich diese Schritte python manage.py db init
, python manage.py db migrate
, python manage.py db upgrade
und es erstellt, aktualisierte Datenbank erfolgreich. Ich habe passenger
installiert, um die Anwendung zu bedienen.
Mein passenger_wsgi.py
sieht aus wie diese
from manage import manager as application
Nun, wenn ich passenger start --port 3003 -a '0.0.0.0'
laufen, es wirft mir diesen Fehler
[ 2016-08-16 07:44:15.0758 30180/7f90226f8700 age/Cor/Con/InternalUtils.cpp:112 ]: [Client 2-1] Sending 502 response: application did not send a complete response
App 30251 stderr: Traceback (most recent call last):
App 30251 stderr: File "/usr/share/passenger/helper-scripts/wsgi-loader.py", line 163, in main_loop
App 30251 stderr: socket_hijacked = self.process_request(env, input_stream, client)
App 30251 stderr: File "/usr/share/passenger/helper-scripts/wsgi-loader.py", line 297, in process_request
App 30251 stderr: result = self.app(env, start_response)
App 30251 stderr: TypeError: __call__() takes at most 2 arguments (3 given)
'Manager' ist nicht Ihre Anwendung' app1' ist in 'app.py'. Der Manager wird nur verwendet, um es in Ihrer Entwicklungsumgebung zu verwalten. –
Großartig, das wusste ich nicht. Können Sie einige Tutorials teilen? Eine andere Sache ist, muss ich nicht "manage.py db migrate" auf dem Server ausführen? –
Sie müssen das ausführen, um die Datenbank zu migrieren. Das bezieht sich nicht auf die WSGI-Anwendung, die der Passagier sucht. Wenn Sie die Migration durchführen, laden Sie den Passagier erneut und alles ist gut. Davidism's Antwort ist richtig. –