Отправка параметра URL из Flask на сервер Bokeh

Я пытаюсь интегрировать «загруженный» сервер Bokeh в приложение Flask, где набор данных для загрузки будет выбран пользователем на другой странице.

Идентификатор этого набора данных находится в URL-адресе (параметр get), и я не могу отправить его из приложения Flask на сервер Bokeh.

Пример кода:

# flask_app.py import subprocess import atexit import subprocess, os from flask import render_template, render_template_string, Flask from bokeh.embed import autoload_server from bokeh.client import pull_session, push_session app_html = """ <!DOCTYPE html> <html lang="en"> <body> <div class="bk-root"> {{ bokeh_script|safe }} </div> </body> </html> """ app = Flask(__name__) bokeh_process = subprocess.Popen( ['bokeh', 'serve', '--allow-websocket-origin=localhost:5000', 'sample.py'], stdout=subprocess.PIPE) @atexit.register def kill_server(): bokeh_process.kill() @app.route('/visualization/<int:batchid>') def visualization(batchid): session = pull_session(app_path='/sample') # I'd love to do something like that... though it doesn't work : session.document.batch_id = batchid bokeh_script = autoload_server(None, app_path="/sample", session_id=session.id) return render_template_string(app_html, bokeh_script=bokeh_script) if __name__ == '__main__': print("STARTED") app.run(debug=True) 

и для сервера bokeh:

 # sample.py import pandas as pd import bokeh # ... doesn't work data = pd.read_csv('batch-%i.csv' % (curdoc().batch_id)) 

Поскольку autoload_server создает фрагмент Javascript, невозможно использовать параметры URL для сервера Bokeh для передачи этих данных (вместе с curdoc().session_context )

Итак … есть ли способ передать аргументы в приложение Bokeh таким образом? TYA!

  • встроенный диапазон или numpy.arange: что более эффективно?
  • Django get url path без использования "request.path"
  • Лучший способ кодирования кортежей с помощью json
  • элегантный список подписок в списке
  • Установка MySQLdb в Mac OS X
  • Python: как импортировать другие файлы Python
  • Как работают лексические закрытия?
  • Scapy.all import * не работает
  • One Solution collect form web for “Отправка параметра URL из Flask на сервер Bokeh”

    Вы можете сделать это, добавив атрибут src <script> возвращаемого с autoload_server . Проверьте мою функцию appendQuery в источнике для этого вопроса

     def appendQuery( script , key , value) : # Pass along the parameter as a query string to the script's src url: TODO this will formally be introduced in next release of Bokeh to avoid this hack script_list = script.split("\n") idxSrcAttr = 2 script_list[idxSrcAttr] = script_list[idxSrcAttr][:-1] + "&{}={}\"".format( key , value ) script = "\n".join(script_list) return script 

    Предполагается, что эта методология будет оформлена в предстоящем выпуске Bokeh в соответствии с … https://github.com/bokeh/bokeh/issues/5992#issuecomment-287232101

    Python - лучший язык программирования в мире.