Сохраненное изображение на Heroku не отображается на обслуживаемой веб-странице

#python #flask #heroku

#python #flask #heroku

Вопрос:

Я получаю изображение через Flask и сохраняю response.content в файл PNG на Heroku. Затем имя этого изображения передается вызывающей функции, которая использует имя файла в обслуживаемом HTML. Я проверяю, что файл существует сразу после его сохранения, проверил целостность файла в автономном режиме, и все работает; но через секунду после сохранения его на Heroku он не существует при отображении на веб-странице. Журналы сервера выглядят следующим образом:

 2020-10-08T20:07:00.542480 00:00 app[web.1]: saved fast_graph to disk @ temp/a45329e9-b76b-4714-9e5a-3463b1b6eaf1.png
2020-10-08T20:07:00.542502 00:00 app[web.1]: verified file: temp/a45329e9-b76b-4714-9e5a-3463b1b6eaf1.png
2020-10-08T20:07:01.934587 00:00 app[web.1]: 10.13.251.139 - - [08/Oct/2020:20:07:01  0000] "GET /temp/a45329e9-b76b-4714-9e5a-3463b1b6eaf1.png HTTP/1.1" 404 232 "http://XXX.herokuapp.com/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0"
2020-10-08T20:07:01.937442 00:00 heroku[router]: at=info method=GET path="/temp/a45329e9-b76b-4714-9e5a-3463b1b6eaf1.png" host=XXX.herokuapp.com request_id=37f77e3b-35ce-4355-b5ca-84b84a51718b fwd="X.X.191.107" dyno=web.1 connect=1ms service=4ms status=404 bytes=400 protocol=http
  

Является ли это свойством эфемерной файловой системы Heroku или я делаю что-то не так? Мой код выглядит следующим образом:

 # get file path of generated chart
response = requests.get(
    if90_clientbase   f"?client_id={client_id}amp;action={api_action}")

# check the outcome
outcome = response.json().get("outcome")
if not outcome:
    return False

# get the filename and fetch the file
file_name = response.json().get("value")
response = requests.get (if90_filesbase   f"?file_name={file_name}")

# generate filename, save fetched content
save_file = f"{temp_folder}{lib_misc.unique_filename()}.png"
with open(save_file, 'wb') as f:
    f.write(response.content)

return save_file
  

Ответ №1:

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