我正在尝试使用 dbutils.notebook.run 从另一个笔记本运行一个笔记本,如下所示:
import ipywidgets as widgets
from ipywidgets import interact
from ipywidgets import Box
button = widgets.Button(description='Run model')
out = widgets.Output()
def on_button_clicked(b):
button.description = 'Run model'
with out:
dbutils.notebook.run("/mynotebookpath",60)
button.on_click(on_button_clicked)
widgets.VBox([button, out])
但是,我收到以下错误:
IllegalArgumentException:上下文无效。如果你打电话给这个 在主线程之外,您必须通过以下方式设置笔记本上下文 dbutils.notebook.setContext(ctx),其中 ctx 是从 主线程(和同一个单元格)
当我在单个单元格上执行
%run
甚至 dbutils.notebook.run("/mynotebook", 60)
在单个单元格上时,我可以很好地运行笔记本。但是我无法让它在 ipywidget 上下文中运行
当我执行给定的代码时,我得到了同样的错误。但是,没有办法按照错误信息来使用
dbutils.notebook.setContext
,因为没有setContext属性。
dbutils.notebook.run
还会创建一个未命名的作业运行。因此,作为替代方案,您可以使用 Jobs 2.0
来运行笔记本。import ipywidgets as widgets
import requests
response = None
def my_function(param):
print(f"This is {param}")
global response
my_json = {"notebook_task": {"notebook_path": "/nb2"},"run_name": "execute notebook","timeout_seconds": 3600,"existing_cluster_id": "<cluster_id>"}
auth = {"Authorization": "Bearer <access_token>"}
response = requests.post('https://<workspace_instance>/api/2.0/jobs/runs/submit', json = my_json, headers=auth).json()
print(response)
button = widgets.Button(description="Run Model")
output = widgets.Output()
display(button, output)
def on_button_click(b):
with output:
print("button is clicked")
my_function('in fuction')
button.on_click(on_button_click)