не могу обновить боке сюжеты в героку - PullRequest
0 голосов
/ 19 марта 2019

Я создаю приложение 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, он всегда отображает один и тот же график. Я очень новичок в этой области, любая помощь будет оценена. Спасибо!

1 Ответ

0 голосов
/ 19 марта 2019

Есть большая вероятность, что ваша непосредственная проблема связана с именами путей, которые вы используете. Проверьте свои журналы, чтобы видеть, есть ли какие-нибудь интересные сообщения об ошибках там.

Но даже если вы добьетесь того, что это сработает, это, вероятно, не будет соответствовать вашим ожиданиям. Файловая система Heroku эфемерна . Любые изменения, которые вы вносите в него, будут потеряны при следующем перезапуске вашего dyno, что происходит часто (по крайней мере, один раз в день). Вы не можете сохранить файлы в файловой системе и ожидать, что они останутся там.

Официальная рекомендация Heroku является для нас сторонней службой, такой как Amazon S3, для хранения пользовательских загрузок, динамически генерируемых файлов и т. Д. Это также хорошее место для обычных статических файлов.

(В этом случае, поскольку вы создаете файл каждый раз при загрузке представления, возможно, вы сможете заставить его работать. Но, возможно, более эффективно кешировать сгенерированное изображение в течение определенного периода времени, и вы можете не делайте это надежно в файловой системе Heroku.)

...