如何检测Python脚本是否通过bokeh serve启动运行?
检测Bokeh脚本的运行模式:
bokeh serve 还是直接运行 可行方案1:检查命令行参数
直接运行脚本时,sys.argv仅包含脚本路径和自定义参数;通过bokeh serve启动时,参数列表会包含bokeh、serve关键字。可以通过判断参数中是否存在serve来区分:
import sys def is_bokeh_serve_mode(): return 'serve' in sys.argv if is_bokeh_serve_mode(): # 执行Bokeh服务模式下的逻辑 from bokeh.plotting import curdoc doc = curdoc() # 在这里添加你的Bokeh可视化组件 else: # 执行直接运行的逻辑 print("脚本直接运行,未启动Bokeh服务")
如果担心自定义参数中包含serve导致误判,可以进一步校验参数顺序,比如判断sys.argv[1]是否为serve,或者结合脚本路径的位置做更严谨的判断。
可行方案2:检查Bokeh文档的session_context属性
通过bokeh serve运行时,curdoc()返回的文档会绑定有效的session_context对象;而直接调用curdoc()时,该属性为None,这是更可靠的判断方式:
from bokeh.plotting import curdoc doc = curdoc() if doc.session_context is not None: # 当前处于bokeh serve运行模式 print("通过bokeh serve启动脚本") else: # 当前为直接运行模式 print("脚本直接运行")
内容的提问来源于stack exchange,提问作者vicmortelmans
相关产品推荐
相关产品推荐

