错误:gunicorn:在“app”中找不到应用程序对象“app”

2024-06-01 12:56:24 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

应用程序.py

from flask_graphql import GraphQLView
from app.infrastructure.graphql import schema
from app.infrastructure.api_resource import app

app.add_url_rule('/graphql', view_func=GraphQLView.as_view('graphql', schema=schema, graphiql=True))

if __name__ == '__main__':
    app.run(debug=True)

api U资源.py

import app.infrastructure.repository as repository
from flask import request, url_for
from flask_restplus import Api, Resource, fields
from sqlalchemy_pagination import paginate
from sqlalchemy_fulltext import FullTextSearch

app = repository.app
api = Api(app, version='0.1', title='xxxxx',
          description='xxxxx')
...

存储库.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from app.domain.model import Base

connection_string = 'xxxxxx'

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = connection_string
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app, metadata=Base.metadata)

但是,当我执行gunicorn命令“gunicorn app:app”时,会出现以下错误:

Failed to find application object 'app' in 'app'

我在Ubuntu16.04上使用pipenv whith pipenv shell,但我也在docker容器上尝试过,得到了同样的错误。 这是我的pip文件:

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[dev-packages]

[packages]
flask-graphql = "*"
flask-sqlalchemy = "*"
sqlalchemy-fulltext-search = "*"
graphene-sqlalchemy = ">=2.0"
flask-marshmallow = "*"
sqlalchemy-pagination = "*"
flask-restplus = "*"
requests = "*"
mysqlclient = "*"
gunicorn = "*"

[requires]
python_version = "3.6"

我做错什么了?


Tags: namefrompyimportapitrueappurl
2条回答

您有一个名为app(通过文件中的导入行)的文件夹和一个app.py文件。

Gunicorn将尝试在app模块中找到appWSGI变量,在您的例子中,它被标识为app/__init__.py

您需要重命名文件夹或app.py文件以避免此冲突。

我发现这个bug只发生在gunicorn版本20+上。当我降级到19.9.0版本时,即使文件夹和共享相同名称的app.py也可以正常工作。

相关问题 更多 >