(对不起,我的英语不是很完美)我正在使用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()"