gpt4 book ai didi

python - 从 Flask api 将参数传递给 Bokeh autoload_server

转载 作者:行者123 更新时间:2023-12-01 02:43:34 25 4
gpt4 key购买 nike

我上周开始使用 Bokeh,所以对它非常陌生,我正在尝试使用 Flask API 中嵌入的 slider 和下拉列表创建交互式条形图,因此我为此创建了 Flask api,它显示了图表 slider 和下拉列表,但它不会在更改 slider /下拉列表值时动态更新图表。

然后,经过进一步研究,我发现我需要为交互部分运行一个单独的 Bokeh 服务器,并从我的 Flask api 调用自动加载服务器。但我不确定如何将我的 http post 参数发送到 bokeh 服务器,因为我的输入数据来自外部 API,参数作为用户输入。

script=autoload_server(model=None,app_path="/bokeh-sliders",url="http://localhost:5006")
return render_template('hello.html',script=script)

引用Sending URL parameter from Flask to a Bokeh server由于我无法在其中发表评论,似乎该功能已集成以将参数传递给自动加载服务器,但我似乎找不到任何有关它的文档。请帮我解决这个问题。

顺便说一句,可以肯定的是,在不运行 Bokeh 服务器的情况下,是否无法在 Flask api 中进行 slider 、下拉列表等交互。

提前致谢。

最佳答案

我遇到了同样的问题,无法添加与 Flask 的交互,并且走上了同样的道路。 The issue of passing arguments is also discussed here.

该功能已添加到 Bokeh 0.12.7 中,您现在可以使用 arguments 参数传递键/值字典以包含到应用脚本中:

script = server_document("https://example.com/myapp",
arguments={'foo': 'bar'})

请注意,server_document 是最近添加的、更简单的 autoload_server 替代品

<小时/>

对于 0.12.7 之前的版本,您还可以使用以下解决方法(感谢 github 上的 kevinsa5):

@app.route('/amped')
def amped():
script = autoload_server(model = None, app_path="/amped")
# `script` is a string that looks like this (the first character is a newline):
"""
<script
src="http://localhost:5006/amped/autoload.js?bokeh-autoload-element=6b813263-05df-45a5-bd91-e25c5e53c020"
id="6b813263-05df-45a5-bd91-e25c5e53c020"
data-bokeh-model-id=""
data-bokeh-doc-id=""
></script>
"""
# so to add on the necessary parameters, we have to insert them manually. hopefully we won't need to urlencode anything.
# note that request.args = a MultiDict, so be careful of duplicate params
# http://werkzeug.pocoo.org/docs/0.11/datastructures/#werkzeug.datastructures.MultiDict

script_list = script.split("\n")
script_list[2] = script_list[2][:-1]
for key in request.args:
script_list[2] = script_list[2] + "&{}={}".format(key, request.args[key])
script_list[2] = script_list[2] + '"'
script = "\n".join(script_list)
return render_template("amped.html", script = script)

这允许您使用

访问它
doc.session_context.request.arguments

关于python - 从 Flask api 将参数传递给 Bokeh autoload_server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45427103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com