【问题标题】:Having trouble running Flask app under uWSGI [duplicate]在 uWSGI 下运行 Flask 应用程序时遇到问题 [重复]
【发布时间】:2016-04-07 21:12:18
【问题描述】:

我正在尝试在 uWSGI 下运行我的 Flask 应用程序并得到:

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

布局是:

/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 包含通常:

from flask import Flask
app = Flask(__name__)

app/main.py 看起来像:

import blueprints
import filters

from app import app

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

wsgi.py 看起来像:

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

如果我从 CLI 运行 python wsgi.py,它可以正常工作,通常是 :5000 服务器。

如果我跑:

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

我看到错误,它无法加载应用程序。

【问题讨论】:

    标签: python flask uwsgi


    【解决方案1】:

    uWSGI 导入你的wsgi.py。所以这段代码永远不会执行:

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

    您应该在模块级别创建应用程序:

    from app.main import app as application
    
    if __name__ == "__main__":
        application.run(...)
    

    您当然必须将 .run() 方法留在主块中,因为您不希望 uWSGI 执行它。

    【讨论】:

      【解决方案2】:

      你有没有尝试过类似...

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

      我不能 100% 确定 --module 和 --callable 选项是否正确,因为我面前没有你的实际代码,可能类似于 --module myapp.app --callable main或其他一些变体

      来自关于一起使用 uwsgi 的文档。

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

      【讨论】:

        【解决方案3】:

        如果它在 virtualenv 你必须通过添加来激活它:

        execfile(activate_this, dict(__file__=activate_this))
        

        我认为你应该定义项目目录:

        import sys
        
        sys.path.append('/opt/myapp/app')
        

        【讨论】:

          猜你喜欢
          • 2023-04-07
          • 1970-01-01
          • 2014-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-19
          • 1970-01-01
          • 2017-01-18
          相关资源
          最近更新 更多