Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Flask应用程序中的值存储到Heroku上的Json文件中,供以后调用_Flask_Heroku - Fatal编程技术网

将Flask应用程序中的值存储到Heroku上的Json文件中,供以后调用

将Flask应用程序中的值存储到Heroku上的Json文件中,供以后调用,flask,heroku,Flask,Heroku,我在Heroku上部署了一个flask应用程序,需要在config.json中存储一个值,以便以后在不同的@app.route上调用。我的实施情况如下: @app.route('/token',methods=['POST']) def token(): token_payload = json.loads(request.data) temp = {'token':token_payload['access_token']} with open('config.json

我在Heroku上部署了一个flask应用程序,需要在
config.json
中存储一个值,以便以后在不同的
@app.route
上调用。我的实施情况如下:

@app.route('/token',methods=['POST'])
def token():
    token_payload = json.loads(request.data)
    temp = {'token':token_payload['access_token']}
    with open('config.json') as json_file:
        config = json.load(json_file)
        config.update(temp)
    write_json(config,'config.json')
    return('Token Received')

with open('config.json') as json_file:
    config_data = json.load(json_file)

access_token = config_data['token']
然而,即使我得到了成功的响应“Token Received”,在以后的调用中,
access\u Token
仍然引用
config\u data['Token']
中的旧值。但是,这个实现正在我的本地机器上运行


我如何让它在Heroku上工作?

Heroku服务模型的一个基本原则是dynos,即运行代码的虚拟机,是短暂的。每当dyno重新启动时(至少每24小时自动启动一次,每次推给Heroku的新版本都会自动启动),您就会得到一个全新的图像。这意味着您以前写入磁盘的任何内容(或者如果您并行运行多个dyno,则写入另一个dyno)都将消失


您要使用的任何持久数据都必须存储在数据库或任何其他外部服务(如AWS S3)上。

Ok。谢谢您的回复。我每天只需要运行这个应用程序6小时。假设我可以在不闲置或重启的情况下运行dyno 6小时,是否可以将access_令牌存储到dyno的活动内存中,以备将来调用,直到它闲置或关机。好吧,重启的确切时间实际上是不可预测的,因为Heroku在24小时内添加了一个高达216分钟的随机值,所以它最终会进入你的6小时窗口。作为一般规则,Heroku被设计为将dyno之外的任何持久数据存储在额外的服务(如数据库)中。如果您不想添加任何外部存储,但想持久化数据,那么Heroku可能不是托管它的最佳选择。openshift允许持久化数据,还是与Heroku完全一样?我不知道openshift的任何内容。好的。谢谢。