我想为Bokeh服务器使用python代码并将其也用作库。因此,我通过_name_=='__main__'
对代码进行了模块化,但是没有触发独立的Bokeh服务器。
def initialize_WatchDataFrame():
print("Initialize Watchlist")
if __name__ == "__main__":
initialize_WatchDataFrame()
curdoc().add_periodic_callback(update_WatchDataFrame, 2000)
curdoc().title = "WatchList"
因此,当我运行带有“ bokeh serve Watchlist.py”的服务器时。我看不到对initialize_WatchDataFrame()的调用。
答案 0 :(得分:0)
如果您希望能够运行python foo.py
而又不想运行bokeh serve foo.py
,那么您将必须embed the Bokeh server as library。这就需要手动设置和启动龙卷风IOLoop
。这是一个完整的示例:
from bokeh.plotting import figure
from bokeh.server.server import Server
from tornado.ioloop import IOLoop
def modify_doc(doc):
p = figure()
p.line([1,2,3,4,5], [3,4,2,7,5], line_width=2)
doc.add_root(p)
if __name__ == '__main__':
server = Server({'/bkapp': modify_doc}, io_loop=IOLoop())
server.start()
server.io_loop.start()
根据您要完成的任务,您可能还需要使用server_document
嵌入此应用程序,或在线程中运行IOLoop
。这些用例在文档中链接的示例中进行了演示。
它可能还需要提及:修改文档的代码仅在建立浏览器连接时运行。 (而且:每次建立浏览器连接时,它都会运行 ,以仅为该会话生成一个新文档。)