<p>正如<a href="https://stackoverflow.com/users/3406693/bigreddot">bigreddot</a>所说,工作流程与代码中微小的更改非常相似。我实际上是根据他的回答来回答的。谢谢你,比格瑞多!在</p>
<p>以下是我的解决方案,集成博克服务器和金字塔。在</p>
<ol>
<li>创建生成Bokeh文档(plot)的函数</li>
</ol>
<pre class="lang-py prettyprint-override"><code>def bokeh_doc(doc):
# create data source
# define all elements that are necessary
# ex:
p = line(x, y, source)
# now add 'p' to the doc object
doc.add_root(p)
# define a callback if necessary
# and register that callback
doc.add_periodic_callback(_cb, delay)
</code></pre>
<ol start=“2”>
<li>将应用程序的路由位置添加到金字塔服务器配置对象。
主要在<code>__init__.py</code>或配置路由的任何其他文件中。在</li>
</ol>
^{pr2}$
<ol start=“3”>
<li>添加必须呈现<code>bokeh_app</code>的视图。此函数可以用<code>views.py</code>编写,也可以在您认为合适的地方编写。在</li>
</ol>
<pre class="lang-py prettyprint-override"><code>from pyramid.view import view_config
from bokeh.embed import server_document
@view_config(route_name='bokeh_app', renderer='static/plot.jinja2')
def bokeh_view(request):
# this '/app' route to the plot is configured in step. 4
# using default host and port of bokeh server.
# But, the host and port can be configured (step. 4)
script = server_document('localhost:5006/app')
# assuming your jinja2 file has
# {{ script|safe }}
# embedded somewhere in the <body> tag
return {'script': script}
</code></pre>
<ol start=“4”>
<li>现在,启动一个bokeh服务器。在</li>
</ol>
<pre class="lang-py prettyprint-override"><code>from bokeh.application import Application
from bokeh.application.handlers import FunctionHandler
from bokeh.server.server import Server
# bokeh_doc is the function which defines the plot layout (step. 1)
chart_app = Application(FunctionHandler(bokeh_doc))
# the '/app' path is configured to display the 'chart_app' application
# here, a different host and port for Bokeh-server could be defined
# ex: {"<host2:9898>/app_bokeh": chart_app}
bokeh_server = Server({"/app": chart_app}, allow_websocket_origin=["localhost:6543"])
# start the bokeh server and put it in a loop
server.start()
server.io_loop.start()
</code></pre>
<p><code>allow_websocket_origin</code>接受必须升级以支持bokeh所需的web套接字连接的字符串列表。在这种情况下,我们需要给出金字塔服务器的url</p>
<ol start=“5”>
<li>最后,启动金字塔服务器</li>
</ol>
<pre class="lang-py prettyprint-override"><code>from wsgiref.simple_server import make_server
pyramid_app = conf.make_wsgi_app()
pyramid_server = make_server('localhost', 6543, pyramid_app)
pyramid_server.serve_forever()
</code></pre>