如何将参数传递给作为库嵌入的Bokeh服务器

时间:2017-10-30 18:57:58

标签: python bokeh

我正试图想出一种方法将参数传递给嵌入式散景服务器调用的函数。我正在关注example here 特别是standalone_embed.py。我需要将一个参数说明var从main函数传递给modify_doc。我不知道该怎么做,因为FunctionHandler似乎没有任何参数。

from bokeh.application.handlers import FunctionHandler
from bokeh.application import Application
from bokeh.layouts import column
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure
from bokeh.server.server import Server

from bokeh.sampledata.sea_surface_temperature import sea_surface_temperature

def modify_doc(doc, var):
    df = sea_surface_temperature.copy()
    source = ColumnDataSource(data=df)
    print var

    plot = figure(x_axis_type='datetime', y_range=(0, 25), y_axis_label='Temperature (Celsius)',
                  title="Sea Surface Temperature at 43.18, -70.43")
    plot.line('time', 'temperature', source=source)
    doc.add_root(column(plot))

    return doc


if __name__ == '__main__':
    var =5
    server = Server({'/': Application(FunctionHandler(modify_doc))})
    server.start()

    server.io_loop.add_callback(server.show, "/")
    server.io_loop.start()

1 个答案:

答案 0 :(得分:0)

您可以使用functools.partial绑定特定值:

from functools import partial

server = Server({'/': partial(modify_doc, var=var)})

另请注意,在更新的版本中,您可以直接使用该功能,方便,而不必自己创建ApplicationFunctionHandler

当您show页面时,也可以传递HTML请求参数,并拥有modify_doc应用代码inspect those HTML args