gpt4 book ai didi

python - uwsgi 找不到 Flask 应用程序 : (callable not found or import error)

转载 作者:行者123 更新时间:2023-11-28 21:13:43 27 4
gpt4 key购买 nike

我大致遵循这个deployment guide对于 flask 。当我通过 uwsgi 启动我的应用程序时,我收到错误:

*** Operational MODE: preforking ***

unable to load app 0 (mountpoint='') (callable not found or import error)

*** no app loaded. going in full dynamic mode ***

这与另一个问题相同SO question ,所以这是一个 python 路径问题,但我仍然无法运行我的应用程序。这是我的设置:

/home/btw/prod/
.... app.py
.... inits.py
.... templates/
.... wsgi.py
.... prod.ini
.... env/ <--- virtualenv dir

初始化文件

# This initializes everything

from flask import Flask
#... other imports

app = Flask(__name__)
app.debug = False

# Flask-Migrate
migrate = Migrate(app,db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)

app.py

# This holds the main application code and routes 

from inits import *

@app.route('/doit')
def doit():
return render_template('doit.html')

if __name__ == '__main__':
manager.run()

prod.ini

[uwsgi]
module = wsgi

master = true
processes = 5

socket = prod.sock
chmod-socket = 660
vacuum = true

die-on-term = true

prod.conf(用于启动 flask 应用程序):

description "uWSGI server instance configured to serve prod"

start on runlevel [2345]
stop on runlevel [!2345]

setuid btw
setgid www-data

env PATH=/home/btw/prod/env/bin
chdir /home/btw/prod
exec uwsgi --ini prod.ini

wsgi.py

from app import manager

if __name__ == '__main__':
manager.run()

我也试过:

from prod import app

if __name__ == '__main__':
manager.run()

但这会提示 ImportError: No module named prod

谁能帮我解决为什么 uwsgi 找不到我的应用程序?

编辑:

我想我找到了问题所在,但我不知道解决方案是什么。调用manager.run()会导致找不到应用,但如果我只是使用app.run(),绕过Flask的manager,uwsgi就成功找到了应用。

这是为什么?

最佳答案

好吧,在探索这个烂摊子几个小时后,我明白了!

当运行 uwsgi 时,app 必须与其他一些内部模块冲突。我已将初始化更改为 application = Flask(__name__) 并执行了 from app import application。现在我的应用程序正在正确加载。

关于python - uwsgi 找不到 Flask 应用程序 : (callable not found or import error),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32506241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com