2016-08-16 7 views
0

Я столкнулся с исключением wsgi при запуске моего кода приложения флешки на сервере.Приложение WSGI подняло исключение

Вот мой manage.py

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() 

и 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'}) 

В моем местном, нет никакой ошибки. Я запускаю свое приложение с помощью этой команды python manage.py runserver.

Теперь на сервере я успешно выполнил следующие шаги: python manage.py db init, python manage.py db migrate, python manage.py db upgrade и создал, обновил базу данных успешно. Я установил passenger для обслуживания приложения.

Мои passenger_wsgi.py выглядит следующим образом

from manage import manager as application 

Теперь, когда я бегу passenger start --port 3003 -a '0.0.0.0', он бросает мне эту ошибку

[ 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) 
+4

'manager' не ваше приложение' app1' находится в 'app.py'. Якорм просто используется для управления им в вашей среде. –

+0

Отлично, я этого не знал. Можете ли вы поделиться некоторыми учебниками? Другое дело: Dont мне нужно запустить «manage.py db migrate» на сервере? –

+0

Чтобы выполнить миграцию базы данных, вам необходимо запустить ее. Это не относится к приложению WSGI, которое ищет пассажир. Когда вы развертываете запуск миграции, перезагрузите пассажира, и все хорошо. Ответ Давидома правильный. –

ответ

2

Импорт приложение Колба, как приложение для запуска, а не Колба-Script менеджер.

from app import app1 as application 

Менеджер флагов-сценариев предназначен для выполнения команд в командной строке. Это не приложение WSGI. Вы можете использовать его для запуска других команд, но сервер WSGI нуждается в приложении Flask.

+0

@Joe Doherty ответил на вопрос в своем комментарии, но я принимаю его :) –