你好@sondrelv,谢谢你的问题。我想澄清一下dbutils.notebook.exit(value)
,runId 不用于杀死其他线程。 dbutils.notebook.exit(value)
用于使当前(this)线程退出并返回一个值。我看到了在笔记本代码中没有可用中断的管理难度。鉴于此限制,我试图寻找其他方法来取消线程。
一种方法是使用其他实用程序来终止线程/运行。
解决这个问题的部分困难在于,通过创建的线程/运行dbutils.notebook.run()
是短暂的运行。Databricks CLIdatabricks runs get --run-id <ephemeral_run_id>
可以获取临时运行的详细信息。如果可以获取详细信息,那么取消也应该起作用(databricks runs cancel ...
)。
剩下的困难是获取运行 ID。临时运行从 CLI 运行列表操作中排除databricks runs list
。
正如您所指出的,它dbutils.notebook.run()
是同步的,并且在完成之前不会向代码返回值。但是,在 notbook UI 中,运行 ID 和链接会在启动时打印出来。必须有一种方法来捕捉这些。我还没有找到如何。
另一种可能的解决方案是为子笔记本创建一些端点或资源,检查它们是否应该继续执行或提前退出使用dbutils.notebooks.exit()
. 在每隔几个单元格之间执行此检查将类似于您链接的文章中的方法,只是应用于笔记本而不是线程。