0

(对不起,我的英语不是很完美)我正在使用flask 和flask-restx 制作一个应用程序。为了在生产环境和开发环境之间进行更改,我设计访问环境变量以更改环境(如服务器 IP 和端口)

最后,我发现有'current_app',并写入从数据库模型文件中访问变量。但出现错误消息。然后我在官方文档中搜索了此消息并再次编写了以下解决方案,但错误消息仍然存在。

你可以帮帮我吗?

RuntimeError: Working outside of application context.

这是我的代码

数据库.py

            app = current_app
            host = app.config['config_data']['host']
            port = app.config['config_data']['port']
            username = app.config['config_data']['username']
            password = app.config['config_data']['password']
            client = MongoClient(host=host, port=int(port), username=username, password=password)
            return client

应用程序.py


def create_app(test_config = None):

    api = Api()
    app = Flask(__name__)
    
    CORS(app)
    api.init_app(app)
    app.config['config_data'] = app.config.get('DB_CONFIG')
    
    
    with app.app_context():
        from lib.db import getDb, DBHandler
        getDb()
    
    api.add_namespace(AuthControl, '/auth')
    api.add_namespace(Board, '/board')
    api.add_namespace(Manager, '/manager')
    api.add_namespace(Admin, '/admin')
    api.add_namespace(Loopback, '/loopback')
    

    if test_config is None:
        app.config.from_envvar('APP_CONFIG_FILE')
        print("PRODUCTION RELEASE")
        
        
    else:
        app.config.from_envvar('APP_CONFIG_FILE')
        print("DEVLEOPMENT")
    
    return app

这是执行代码

#!/bin/sh
export APP_CONFIG_FILE="./config/prod_config.py"
export FLASK_ENV=production

gunicorn -b 0.0.0.0:5050 "app:create_app()" 
4

0 回答 0