首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gunicorn不会启动烧瓶应用程序,因为“应用程序对象必须是可调用的”

Gunicorn不会启动烧瓶应用程序,因为“应用程序对象必须是可调用的”
EN

Stack Overflow用户
提问于 2018-11-12 08:18:06
回答 1查看 11.3K关注 0票数 16

这可能是Python的一个问题,但经过一整天的搜索,我无法找到解决方案。

我创建了一个简单的Flask应用程序,下面是python_pgfutter_importer/app.py的摘录:

代码语言:javascript
复制
import os

from flask import Flask, Blueprint

from python_pgfutter_importer import settings
from python_pgfutter_importer.api.importer.business import import_csv
from python_pgfutter_importer.api.importer.endpoints.csv import ns as csv_importer_namespace
from python_pgfutter_importer.api.restplus import api

app = Flask(__name__)


def initialize_app(flask_app):
    blueprint = Blueprint('api', __name__, url_prefix='/api')
    api.init_app(blueprint)
    api.add_namespace(csv_importer_namespace)
    flask_app.register_blueprint(blueprint)


def main():
    initialize_app(app)
    app.run(debug=settings.FLASK_DEBUG, use_reloader=settings.FLASK_USE_RELOADER)


if __name__ == "__main__":
    main()

应用程序运行良好,我使用以下命令启动它:

代码语言:javascript
复制
python python_pgfutter_importer/app.py

现在我必须在服务器上托管这个应用程序,因此我必须使用WSGI。使用我能找到的所有教程,我编写了这个WSGI入口点(wsgi.py):

代码语言:javascript
复制
from python_pgfutter_importer import app as application

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

启动Gunicorn时,以下是CLI输出:

代码语言:javascript
复制
$gunicorn -b 127.0.0.1:8000 wsgi:application               
[2018-11-12 09:15:48 +0100] [11782] [INFO] Starting gunicorn 19.9.0
[2018-11-12 09:15:48 +0100] [11782] [INFO] Listening at: http://127.0.0.1:8000 (11782)
[2018-11-12 09:15:48 +0100] [11782] [INFO] Using worker: sync
[2018-11-12 09:15:48 +0100] [11785] [INFO] Booting worker with pid: 11785
Application object must be callable.
[2018-11-12 09:15:48 +0100] [11782] [INFO] Shutting down: Master
[2018-11-12 09:15:48 +0100] [11782] [INFO] Reason: App failed to load.

问题似乎是:应用程序对象必须是可调用的.

这没有任何意义,因为应用程序是水瓶,当然是可调用的。

我还能错过什么?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-12 08:24:08

如果您的路径是python_pgfutter_importer/app.py,那么您在wsgi.py中的导入看起来是关闭的:

代码语言:javascript
复制
from python_pgfutter_importer import app as application

这使application成为一个模块对象,您需要的是一个应用程序:

代码语言:javascript
复制
from python_pgfutter_importer.app import app as application

或者,如果您将Gunicorn命令行中的wsgi.py更改为python_pgfutter_importer.app:app,则可能会取消使用python_pgfutter_importer.app:app文档

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53258168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档