У меня есть приложение с одной страницей - Angularjs на передней панели и фляжка на бэкэнд, которая позволяет пользователю загружать файл (xlsx, csv ...), а затем интерактивно анализировать/запрашивать файлFlask - Сохранение значений в памяти между запросами
По сути, пользователь загружает файл в память при первой загрузке, а затем последующие вызовы ajax будут использовать этот файл в памяти. Я не уверен, как сохранить файл в памяти между последующими запросами (ajax).
Переменная g
стираются после каждого запроса и, если я понимаю право использовать для значений доступа через запрос (набор обычно before_request
и доступны все через контекст views
запроса является локальным по отношению к запросу. Я сделал удаешься установить значение на current_app, а затем была в состоянии получить доступ к этому в моей последующей AJAX вызывает
# On my first file upload, i load the file into memory
and set it to a variable on current_app:
from flask import current_app
@app.route('/upload', methods =['POST'])
def upload():
...
upload file into memory
...
current_app.file = file_in_memory
@app.route('/subsequent_call')
def subsequent():
# i'm able to access the file in memory through
the current_app.file which i set earlier
return current_app.file.number_of_lines()
этот метод сохранение файла в памяти на current_app просто не кажется правильной и чувствует себя слишком грязные/хак. Будут эта шкала вообще?
Я могу разложить файл после каждого запроса и вытащить его для каждого запроса. Но Хранение/травление и повторная загрузка файла каждый раз в память, когда пользователь в интерактивном режиме запрашивает данные, кажется слишком тяжелым/неэффективным.
Есть ли другой элегантный/правильный способ сделать это, app_context, werkzeug locals и т. Д.? Или я думаю, что все это неправильно?
Сохранение состояния на веб-сервер - довольно плохая практика. Почему он должен быть в памяти? – johnharris85
@Jharris: Согласитесь, что состояние хранилища веб-серверов. Файл должен быть в памяти, поскольку я загружаю его в объект pandas. травление объекта панды между запросами кажется слишком неэффективным. –