1. ホーム
  2. python

Flask and uWSGI - unable to load app 0 (mountpoint='') (callable not found or import error).Flask and uWSGI - unable to load app 0 (mountpoint='') (callable not found or import error).

2023-10-11 23:28:37

質問

uWSGIを使ってFlaskを起動しようとすると、以下のようなエラーが発生します。 以下は起動方法です。

>  # cd ..
>     root@localhost:# uwsgi --socket 127.0.0.1:6000 --file /path/to/folder/run.py --callable app -  -processes 2

以下は私のディレクトリ構造です。

-/path/to/folder/run.py
      -|app
          -|__init__.py
          -|views.py
          -|templates
          -|static

の内容は /path/to/folder/run.py

if __name__ == '__main__':
   from app import app
   #app.run(debug = True)
   app.run()

の内容は /path/to/folder/app/__init__.py

import os
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.login import LoginManager
#from flaskext.babel import Babel
from config import basedir
app = Flask(__name__)
app.config.from_object('config')
#app.config.from_pyfile('babel.cfg')

db = SQLAlchemy(app)
login_manager = LoginManager()
login_manager.setup_app(app)
login_manager.login_view = 'login'
login_manager.login_message = u"Please log in to access this page."

from app import views

*** Operational MODE: preforking ***
unable to find "application" callable in file /path/to/folder/run.py
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (pid: 26972, cores: 1)
spawned uWSGI worker 2 (pid: 26973, cores: 1)

どのように解決するのですか?

uWSGIは、アプリを __main__ として読み込まないので、決して app (を見つけることはできません(これはアプリが名前 __main__ ). 従って、それを if __name__ == "__main__": ブロックの外側でインポートする必要があります。

本当に簡単な変更です。

from app import app as application  # for example, should be app

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

これで、アプリを直接実行できるようになりました。 python run.py で直接実行するか、uWSGIを通して実行することができます。

注意: もし --callable myapp を設定した場合、それを as application から myapp (デフォルトでは uwsgi が期待されます。 application