相当于散景服务 - 在完整的python中显示myapp

时间:2016-10-20 12:29:39

标签: python eclipse bokeh

我使用Bokeh应用程序做了很多工作。我需要一步一步地调试它们并交付它们。 (如果相关,我习惯在eclipse IDE中工作,PyDev提供的Python调试模式对我来说很方便。)

但是当我发送我的应用时,我会通过bokeh serve --show myapp启动它。

这不允许在命令行中启动eclipe的任何调试模式。 当我想调试我的应用程序时,我在终端中单独启动bokeh serve命令,在eclipse端,我运行我的应用程序,该应用程序以下面的代码片段结束,专用于调试模式(基于arg打开) ):

session = push_session(curdoc())
session.show() # open the document in a browser
session.loop_until_closed() # run forever

是否可以通过常用方式启动散景应用,无论是使用还是调试?换句话说,我可以完全依赖python代码来提供我的散景应用程序,而无需依赖额外的命令行吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

对于bokeh v0.12.6,可能是:

import random
from tornado.ioloop import IOLoop
from bokeh.server.server import Server
from bokeh.application import Application
from bokeh.application.handlers.function import FunctionHandler
from bokeh.plotting import figure, ColumnDataSource

def make_document(doc):
    source = ColumnDataSource({'x': [], 'y': [], 'color': []})

    def update():
        source.stream({'x': [random.random()], 'y': [random.random()], 'color': [random.choice(['red', 'blue', 'green'])]})

    doc.add_periodic_callback(update, 100)

    fig = figure(title = 'Streaming Circle Plot!', sizing_mode = 'scale_both')
    fig.circle(source = source, x = 'x', y = 'y', color = 'color', size = 10)

    doc.add_root(fig)

io_loop = IOLoop.current()
server = Server({'/myapp': Application(FunctionHandler(make_document))}, port = 5001, io_loop = io_loop)
server.start()
server.show('/myapp')
io_loop.start()