Bokeh服务器正在运行,生成特定的情节。另一个进程如何向Bokeh服务器发送消息,导致它完全丢弃该图并生成新的图? Bokeh服务器需要能够根据来自其他进程的消息生成许多不同样式的绘图中的一种。它还需要能够接收图中数据的流更新。它可能没有关系,但需要将这些图表嵌入到Flask应用程序的页面中。
编辑:这个问题最初是针对我要做的事情的细节问题,但是由于过于宽泛而收到了负面反馈。我希望我没有落入XY problem更简洁。目标是让Bokeh服务器显示实时数据的图表,并根据运行独立于Bokeh服务器的其他脚本,使这些图表随时间而变化。
答案 0 :(得分:1)
您可以使用pyzmq的asyncio接口在散景服务器和其他进程之间进行通信。
http://pyzmq.readthedocs.io/en/latest/api/zmq.asyncio.html
如果您希望应用程序的每个会话都有不同的通信过程:
在on_session_created()
的{{1}}中启动该过程,并启动任务以监控散景应用程序代码中的传入pyzmq消息:
server_lifecycle.py
其中import zmq
import zmq.asyncio
ctx = zmq.asyncio.Context.instance()
sock = ctx.socket(zmq.XXXX)
sock.bind(.....)
@without_document_lock
async def message_loop():
while True:
message = await sock.recv_pyobj()
process_message(message)
curdoc().add_next_tick_callback(message_loop)
是套接字对象。
这是一个完整的例子:
https://gist.github.com/ruoyu0088/ea9a199762993b91f7ca13d0dbdbcdaa