web-dev-qa-db-ja.com

エラー:gunicorn: 'app'でアプリケーションオブジェクト 'app'が見つかりませんでした

ここに私のコードがあります:

app.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_resource.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')
...

repository.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'

私はubuntu 16.04でpipenvシェルを使用してpipenvを使用していますが、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"

何が間違っていますか?

8

app(ファイルのインポート行など)とapp.pyファイルというフォルダーがあります。

Gunicornはappモジュール内のapp WSGI変数を見つけようとします。この場合、この変数はapp/__init__.pyとして識別されます

この競合を回避するには、フォルダーまたはapp.pyファイルの名前を変更する必要があります。

7
Jundiaius