ArcGIS Notebook Server 允许您实现多种工作流自动化方法,实现途径包括计划的笔记本、webhook 和您自己的使用“执行 Notebook”管理 API 的自定义脚本。
注:
要使用计划任务、webhook 或“执行 Notebook”API 自动化笔记本,笔记本必须使用 3.0 或更高版本的运行时。
计划笔记本任务
自 10.8.1 版本起,笔记本创作者可以计划 ArcGIS Notebooks,以便在未来的某个固定时间自动运行一次或重复运行。 通过创建任务来计划笔记本,可供自动执行常规工作流、在非高峰时段运行数据密集型过程以及定期更新数据集。 例如,可以计划笔记本以执行以下操作:
- 从每月更新一次的在线源导入数据,自动清除数据并应用必要的转换,然后将数据移至您的工作空间。
- 当计算机资源未被使用时,在夜间运行需要强大处理能力的大数据分析工作流。
- 管理过去一周内在门户中创建了帐户的用户,并通过电子邮件将列表发送给您。
您可以为 notebook 创建一个或多个任务。 默认情况下,notebook 创作者或管理员最多可以创建 20 个任务。 如果 notebook 的所有权发生变化,与该 notebook 相关联的任何任务都将取消激活并分配给新的所有者。
您可通过计划任务参数化 notebook。 Notebook 参数化后,您可以写入通用代码,无需您的交互即可适应不同的输入。 运行任务时,所选参数会插入到 notebook 中,并且可以选择将其保存到 notebook。 例如,参数化 notebook 可用于定期生成区域范围内的空气污染报告。 Notebook 可以有多个计划任务,每个要研究的区域使用一个任务,并且对于每个任务,可以将城市名称和污染类型等参数化输入送入 notebook。
注:
同时运行的 notebook 任务数量受限于 Notebook Server 中的 maxExecuteNotebookContainersPerNode 系统属性。
您可以将任务配置为在完成后将 notebook 的状态保存到原始 notebook 项目中。
将为每个运行的计划任务保存 notebook 的静态 HTML 视图。 默认情况下,只会保存最近 30 次运行的结果。
使用 ArcGIS Notebook Server Manager 中的任务页面,管理员可以查看详细信息,或者编辑、暂停/恢复或删除站点中的活动 notebook 任务。 具有计划 notebook 权限的管理员和 notebook 创作者可以在 notebook 的详细信息页面或 notebook 编辑器的任务窗格中查看详细信息,或者编辑、暂停/恢复或删除 notebook 任务。
为防止 notebook 重复运行失败,计划任务将在连续 5 次失败后禁用。 在重新激活任务之前,任务所有者必须确保 notebook 可以在没有任何用户交互的情况下成功运行。
如果任务之前的运行仍在继续,则将跳过新的计划任务运行。 例如,如果某个任务计划每 15 分钟运行一次,但该任务的一个实例运行了 20 分钟,则将跳过下一次计划运行。 如果这种情况经常发生,任务所有者应该调整计划的时间间隔,以便运行之间没有重叠。
有关计划的 notebook 任务的详细信息,请参阅计划 notebook 任务帮助主题。
使用 webhook 自动化 notebook
Webhook 是一种允许应用程序为其他应用程序提供事件驱动型信息的机制。 作为 ArcGIS Enterprise Portal 管理员,您可以创建、管理和配置 webhook。 您可以将 webhook 配置为在与您的门户项目、群组或用户关联的事件发生时自动运行您拥有的 notebook。 触发 webhook 后,会向 Notebook Server 发出 HTTP 请求以运行所选 notebook,无需任何用户交互。
注:
通过 webhook 同时运行的 notebook 数量受限于 Notebook Server 中的 maxExecuteNotebookContainersPerNode 系统属性。
创建 webhook
只能通过 ArcGIS Portal Directory(共享 API)对 Webhook 进行管理。 使用以下步骤创建 webhook:
- 浏览至 ArcGIS Portal Directory。https://machine.domain.com/webadaptor/sharing/rest
- 以管理员身份登录。
Webhook 只能由管理员创建和管理。
管理员用户页面随即显示。
- 单击组织 ID 超链接,或根据以下表单提出请求,以转到门户自助资源页面。https://machine.domain.com/webadaptor/sharing/rest/portals/<orgID>
- 滚动至页面底部,直至子资源下的 Webhooks。https://machine.domain/com/webadaptor/sharing/rest/portals/<orgID>/webhooks
- 在支持的操作下,选择创建 webhook。
- 指定 webhook 的参数。 要创建自动化 notebook 的 webhook,请提供以下信息:
参数 详细信息 name (必填)
指定 webhook 的名称。
示例:name=mynotebook_webhook
url (可选)
为 notebook 配置 webhook 时,负载 URL 不是必填项,因为系统会自动进行派生。 您并非必须提供此信息。
config (必填)
设置 webhook 的配置属性。
注:
您必须是管理员并且是要通过 webhook 运行的 notebook 项目的所有者。
示例:
{ "deactivationPolicy": { "numberOfFailures": 5, "daysInPast": 5 }, "properties": { "federatedServer": { "itemId": "<Notebook item id to be executed>", "tokenTypeToSend": "owner", "tokenExpirationTimeMinutes": 10 } } }
events (可选)
将触发 webhook 的事件的 URI 表示。 如果将 changes 指定为 manual,则此参数是必填项。 有关详细信息,请参阅支持的触发事件部分。 有关触发事件的其他示例,请参阅 REST API 文档中创建 webhook 的触发事件部分。
示例:
events=/items,/users
有关这些参数的详细信息,请参阅 webhook REST API 文档。
您的 webhook 现已在 webhook 下列出:https://machine.domain.com/webadaptor/sharing/rest/portals/<orgID>/webhooks。
有关使用 webhook 自动化的详细信息,请参阅 ArcGIS Enterprise 中的 Webhook 帮助主题。
管理 webhook
您可以根据以下表单提出请求,从而通过 ArcGIS Portal Directory 来管理您的 webhook:
Webhook 管理所支持的操作如下:
- Update Webhook - 更新您的 webhook 参数。 您可以更新指定 webhook 的名称、负载 URL、配置或触发事件。
- Delete Webhook - 从门户中删除 webhook。
- Deactivate Webhook 和 Activate Webhook - 禁用 webhook,即在触发 webhook 时停止传送负载。 当 webhook 处于禁用状态时,可通过“激活 Webhook”操作恢复负载的传送。
Notification Status 页面用于显示与特定 webhook 关联的触发事件的相关信息。 您可以使用此表来监控您的 webhook 以及所传送负载的详细信息,例如触发 webhook 的时间,以及从负载 URL 和所传送负载接收到的响应。 指示负载传送成功的记录会于一天后删除。 指示传送尝试失败的记录会存储七天。
有关这些操作的示例,请参阅 Webhooks API。
有关使用 webhook 自动化的详细信息,请参阅 ArcGIS Enterprise 中的 Webhook 帮助主题。
Webhook 负载
当通过 webhook 运行 notebook 时,webhook 的负载信息会自动加入到 notebook 的初始单元格中。 加入后,webhook 负载中提供的信息可以在 Notebook 中用于进一步自动化工作流。
包含在 Notebook 中的 Webhook 负载信息:{
"properties": {
"itemId": "<itemId of the current notebook>"
},
"events": [
{
"source": "items",
"id": "<itemId of the item that resulted in webhook trigger>",
"userId": "<webhook user>",
"when": \<epoch time in ms when webhook was triggered\>,
"operation": "<type of operation that resulted in webhook trigger>",
"properties": {},
"username": "<webhook username>"
}
],
"info": {
"webhookId": "<webhookId>",
"portalURL": "<public portal url>",
"webhookName": "<webhook name>",
"when": \<epoch time in ms when webhook was triggered\>,
}
}
执行 Notebook API
管理员和 notebook 创作者还可以在 ArcGIS Notebook Server Administrator Directory 中使用“执行 Notebook”操作自动运行 notebook,而无需用户控制。 此操作将在调用时自动运行笔记本,但是通过使用您自己的自定义脚本,您可以将其计划为在设置的时间或定期自动运行。 cron 作业或 Windows 计划程序也可用于计划“执行 Notebook”操作以在设置的时间或按照循环间隔运行。
要了解详细信息,请参阅 Administrator Directory reference 参考指南中的执行 Notebook 主题。
自动化 notebook 同时运行的最大数量
当 notebook 通过计划任务、webhook 或“执行 Notebook”API 运行时,ArcGIS Notebook Server 将打开一个新容器并自动运行该 notebook,无需任何用户交互。 默认情况下,ArcGIS Notebook Server 配置为每台 Notebook Server 计算机最多同时支持 10 个 notebook 运行。 考虑到 Notebook Server 站点中每台计算机上可用的资源(CPU 和 RAM),管理员可以通过修改 Notebook Server 中的 maxExecuteNotebookContainersPerNode 系统属性来调整限制。