使用 Bokeh 作为库时访问静态目录
Access static directory when using Bokeh as a library
我正在尝试制作一个散景服务器,为所有连接的人提供相同的视图。我已经能够使用 library mode 中的 Bokeh 使用以下代码实现此目的:
from tornado.ioloop import IOLoop
from bokeh.server.server import Server
from bokeh.plotting import curdoc
io_loop = IOLoop.current()
server = Server(applications={'/myapp': self.make_document},
io_loop=io_loop,
allow_websocket_origin=['{0}.com:5001'.format(
hostname.lower()), 'localhost:5001'],
port=5001,
)
server.start()
server.show('/myapp')
io_loop.start()
运行 和 python main.py
,但是我无法访问静态目录 /myapp/static
.
如果我改为:
self.make_document(curdoc())
并使用 bokeh server --show myapp
启动 myapp
我可以很好地访问静态,但每个新的浏览器选项卡连接都会获得一个新视图。
有没有办法在库模式下访问静态?或者一种为所有连接提供相同视图并仍然使用 bokeh document mode.
的方法
中找到答案
from tornado.web import StaticFileHandler
from tornado.ioloop import IOLoop
from bokeh.server.server import Server
from bokeh.plotting import curdoc
io_loop = IOLoop.current()
server = Server(applications={'/myapp': self.make_document},
io_loop=io_loop,
allow_websocket_origin=['{0}.com:5001'.format(
hostname.lower()), 'localhost:5001'],
port=5001,
extra_patterns=[
(r'/mydir/(.*)', StaticFileHandler, {'path':
os.path.normpath(os.path.dirname(__file__) + '/mydir')})],
)
server.start()
server.show('/myapp')
io_loop.start()
这里 mydir
需要在 myapp
目录中而不是父目录中。
我正在尝试制作一个散景服务器,为所有连接的人提供相同的视图。我已经能够使用 library mode 中的 Bokeh 使用以下代码实现此目的:
from tornado.ioloop import IOLoop
from bokeh.server.server import Server
from bokeh.plotting import curdoc
io_loop = IOLoop.current()
server = Server(applications={'/myapp': self.make_document},
io_loop=io_loop,
allow_websocket_origin=['{0}.com:5001'.format(
hostname.lower()), 'localhost:5001'],
port=5001,
)
server.start()
server.show('/myapp')
io_loop.start()
运行 和 python main.py
,但是我无法访问静态目录 /myapp/static
.
如果我改为:
self.make_document(curdoc())
并使用 bokeh server --show myapp
启动 myapp
我可以很好地访问静态,但每个新的浏览器选项卡连接都会获得一个新视图。
有没有办法在库模式下访问静态?或者一种为所有连接提供相同视图并仍然使用 bokeh document mode.
的方法from tornado.web import StaticFileHandler
from tornado.ioloop import IOLoop
from bokeh.server.server import Server
from bokeh.plotting import curdoc
io_loop = IOLoop.current()
server = Server(applications={'/myapp': self.make_document},
io_loop=io_loop,
allow_websocket_origin=['{0}.com:5001'.format(
hostname.lower()), 'localhost:5001'],
port=5001,
extra_patterns=[
(r'/mydir/(.*)', StaticFileHandler, {'path':
os.path.normpath(os.path.dirname(__file__) + '/mydir')})],
)
server.start()
server.show('/myapp')
io_loop.start()
这里 mydir
需要在 myapp
目录中而不是父目录中。