uwsgi 上的 Flask 应用程序给出 TypeError: 'Flask' object is not iterable

Ced*_*ury 6 python flask uwsgi

我正在 Arch Linux 上的 virtualenv 中的 Python 3.5 上运行 Python/Flask 应用程序。该应用程序由通过套接字连接到 Nginx 的 uwsgi 服务器运行。

当我执行请求时,我收到以下 uwsgi 错误:

Mar 23 02:38:19 saltminion1.local uwsgi[20720]: TypeError: 'Flask' object is not iterable
Run Code Online (Sandbox Code Playgroud)

这是 uwsgi 配置使用的可调用文件:

Mar 23 02:38:19 saltminion1.local uwsgi[20720]: TypeError: 'Flask' object is not iterable
Run Code Online (Sandbox Code Playgroud)

当我在本地 OS X 开发工作站和 Arch/Ubuntu vagrant 机器上使用内置 HTTP 服务器启动应用程序时,一切正常。

问题是:添加调试语句后,很明显错误发生在 Flask 代码本身的某个点,而不是我的应用程序中。如何在此处获取堆栈跟踪以更好地进行故障排除?

dav*_*ism 7

WSGI 应用程序(Flask 就是这样)是一个可调用对象。这就是 uWSGI 希望传递给callable. 您正在传递一个应用程序工厂,它也是可调用的,但您需要将调用的结果传递给它,因为应用程序工厂本身不是 WSGI 应用程序。

可以在配置中直接调用工厂函数。该modulecallable选项也可以在短短的结合module

module = my_app:create_app()
Run Code Online (Sandbox Code Playgroud)

这告诉 uWSGI 导入my_app、查找my_app.create_app和调用它。结果,Flask 应用程序实际上用作可调用对象。