0

我在编写将加载烧瓶引导示例的 uWSGI 入口点文件时遇到问题,因为我的应用程序的结构不是从 if name == " main " 开始:我只是想使用具有一个不同的 Flask app.py,它调用另一个文件来运行 if名称部分。我当前的 uWSGI 入口点文件如下所示:

from myproject import app

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

为我的应用程序提供服务,但我相信我可能需要以不同的方式构造它,因为我的 app.py 文件不是这样编写的。

我的 Flask app.py 看起来像这样:

import sys

sys.path.append(os.path.dirname(__name__))

from sample_application import create_app


app = create_app()

app.run(host='0.0.0.0')

我正在关注本教程: https ://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uswgi-and-nginx-on-ubuntu-18-04

4

2 回答 2

0

考虑/home/pi/server.py(如果您在 Raspberry Pi 上进行设置)

from app import create_app

app = create_app()

如果/etc/uwsgi/apps-enabled/server包括

chdir = /home/pi
home = /home/pi/venv  # if you're using virtualenv
module = server:app

然后 uwsgi 将知道加载服务器(server.py),并期望app. Flask 提供了一个 WSGI 应用程序。

而且由于 uwsgi 正在加载,if __name__ == '__main__':因此不会是真的,所以如果 server.py 读取

from app import create_app

app = create_app()

if __name__ == '__main__':
    app.run(host='0.0.0.0')

您可以通过 uwsgi 运行它,或者(假设您使用的是虚拟环境)通过

FLASK_APP=server.py venv/bin/flask run
于 2019-09-22T00:24:56.873 回答
0

好,很好。谢谢!我能够弄清楚。我有:

import os
import sys
from sample_application import create_app
sys.path.append(os.path.dirname(__name__))


app = create_app()

if __name__ == "__main__":
    app.run()
于 2019-09-22T00:57:27.017 回答