部署到 Heroku 时如何在 Flask 应用程序中加载静态文件?

问题描述

我有一个 Flask JSON API 应用程序,它可以读取代码存储库中的文件显示文件中的数据。我的申请文件如下:

from flask import Flask,jsonify

from utils import load_data


data = load_data(os.environ.get('DATA_FILE_PATH'))  # This would be in data/data.txt for example

app = Flask(__name__)

@app.route('/',methods=['GET'])
def home():
    return jsonify(data=data)

当我部署到 Heroku 时,如何设置环境变量以指向该特定数据文件?在本地,我会做

$ export DATA_FILE_PATH=/path/to/repo/data/data.txt

我知道我可以使用 Heroku CLI heroku config:set DATA_FILE_PATH=<path>,但我不确定如何放置该路径变量,因为我并不真正了解 Heroku 部署的目录结构。

解决方法

您可以在设置选项卡配置变量中添加它们 Heroku settings tab

,

好的,事实证明您可以使用以下命令进入 Heroku Dyno 的 bash(假设您已经推送到 Heroku):

$ heroku run bash

并弄清楚文件系统结构是什么样的。在我的特殊情况下,我的 repo 是在 /app 目录下提供的。所以我需要传递给 DATA_FILE_PATH 环境变量的值的是 /app/data/data.txt