Flask & структура Bokeh - PullRequest
       17

Flask & структура Bokeh

0 голосов
/ 16 апреля 2020

Я работаю над проектом, встроенным в Flask, который будет отображать результаты анализа на графиках Боке. Я все еще на ранней стадии разработки и хотел бы получить мнения и советы.

Приложение позволит пользователям формировать запрос SQL на основе формы html. Это будет / index маршрут приложения Flask. Нечто похожее на это:

<form action="/Dashboard_1">
<label for="birthday">Choose the Start Date:</label>
<input type="date" id="date_start" name="date_start">
<input type="submit">
</form>

База данных содержит временные ряды с различными полями. Обычно на каждой сессии я собираю несколько тысяч строк данных. Затем данные извлекаются из базы данных, а затем на следующих нескольких маршрутах (/ Dashboard_1 и / Dashboard_2) выполняется анализ и результаты выводятся на график. Пользователь должен иметь возможность выбирать, какие поля будут отображаться, а также пользователь должен иметь возможность переключаться между / Dashoboard_1 и / Dashboard_2 без необходимости повторного запроса к базе данных и повторного анализа.

Что Я борюсь с тем, как сохранить результаты анализа и данные между различными инструментальными панелями / маршрутами.

Сначала я подумал, что могу использовать встроенный API-интерфейс примерно так:

@/app.route('/Dashboard_1', methods=['GET', 'POST']) 
def dashboard():
  if request.method == 'POST':    
       sql_data, VARIABLE_1, VARIABLE_2 = retrieve_data(...# Does the SQL query and returns the data deom SQL) 
      df_data = module_analysis(... # Does the analysis and returns a Pandas DataFrame)    
      script, div = components(plot_dash(source, plot_width=450)) # Does the Bokeh Plots     
      session['VARIABLE_1'] = VARIABLE_1    
    return render_template('dashboard_1.html', VARIABLE_1=VARIABLE_1, script=script, div=div)

И dashboard_1.html будет:

{% extends 'base.html' %}       
{% block head %}   
<title>Performance Analytics dashboard</title>   
<script src="https://cdn.bokeh.org/bokeh/release/bokeh-2.0.1.min.js"    crossorigin="anonymous"></script>   
<script src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.1.min.js"    crossorigin="anonymous"></script>   
<script src="https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.1.min.js"    crossorigin="anonymous"></script>   
{{ script|safe }}   
{% endblock %}  
{% block body %}   <h1>This is the first dashboard</h1>  
{{ div|safe }}   
{% endblock %} 

Это работает, но не позволит перемещаться по разным маршрутам без необходимости повторного анализа. Я думал о передаче сценария и div каждого графика как Flask session переменных, но это лучший способ сделать это? Должен ли я передавать df_data как переменную Session или она слишком велика для этого?

...