我正在创建一个具有散景图的Heroku应用程序,并使用用户输入进行更新。当我运行python代码时,我看到在我的本地目录中图已更新,但是在Heroku应用程序上没有任何变化。这是我的app.py的相对部分:
def graph(sym,yr,month):
response=requests.get(some_link)
data=response.json()
df=pd.DataFrame(data)
p = figure(plot_width=600, plot_height=400)
x_axis=[i for i in range(len(df.values))]
p.line(x_axis,df['4. close'].iloc[::-1], line_width=2)
output_file('templates\image.html')
save(p)
app = Flask(__name__)
@app.route('/')
def index_lulu():
return render_template('stockticker.html')
@app.route('/static/<path:path>',methods=['GET','POST'])
def static_file(path):
return app.send_static_file(os.path.join('static', path))
@app.route('/image.html',methods=['GET','POST'])
def hello3():
symbol=request.form['symbol_lulu']
year=request.form['year_lulu']
month=request.form['month_lulu']
graph(symbol,year,month)
return render_template('image.html')
if __name__ == "__main__":
app.run(debug=False)
stockticker.html接受符号,年,月的输入。当我在终端上运行app.py时,image.html会不断更新,但是当我在Heroku上部署它时,它总是显示相同的图。我是这个领域的新手,我们将不胜感激。谢谢!
答案 0 :(得分:0)
您的直接问题很有可能与您使用的路径名有关。检查您的日志,看看那里是否有有趣的错误消息。
但是,即使您做到了,它也可能无法达到您的期望。 Heroku的文件系统is ephemeral。您对它所做的任何更改都将在下次您的dyno重新启动时丢失,每次happens frequently(每天至少一次)。您无法将文件保存到文件系统并期望它们保留在那里。
Heroku的official recommendation是我们的第三方服务,例如Amazon S3,用于存储用户上传的内容,动态生成的文件等。这也是常规静态文件的好地方。
(在这种情况下,由于您是在每次加载视图时都创建文件,因此也许可以使它正常工作。但是将生成的图像缓存一定时间可能更有效,并且您可以不能在Heroku的文件系统上可靠地做到这一点。)