运行环境
每个 Notebook 实例在独立沙箱中运行。沙箱提供隔离的执行环境,并按启动时的配置限制 CPU 和内存使用。环境预装 Chaintable SDK,脚本可以通过它们读取表、查询链上状态或提交计算。 Notebook 的资源配置用于驱动脚本本身的工作,例如整理输入和收集结果。提交给 BlockX 的函数使用独立的计算资源,增加 Notebook CPU 不会直接增加函数的调用预算。Notebook 与 Function 支持的接口也可能不同,计算函数应按运行环境与访问边界中的说明编写。实例生命周期
启动时,系统检查账户额度,并将代码、参数和资源配置保存到本次实例。运行中的标准输出、错误日志和资源用量可以在网页查看。脚本正常返回、抛出未处理异常、被停止、达到期限或因内存不足被终止后,实例结束。 修改 Notebook 不会改写已经启动的实例。要使用新代码,需要启动新的实例;调度的后续运行使用已保存的脚本。 前台运行需要保持页面活动;切换后台后,脚本可以在离开页面后继续执行,但仍受运行期限限制。需要自动创建后续实例时,使用定时调度或 Continuous 调度,配置方法见调度。 Continuous 在实例退出后创建新的实例,从脚本入口重新执行。Python 变量、内存缓存和循环位置不会随之恢复。需要保留的结果和处理进度应写入持久存储;多次运行共用的配置可以使用账户的运行变量。驱动脚本如何协调计算
在脚本中直接调用一个普通 Python 函数,会在当前实例内执行。通过 BlockX SDK 或 Pipeline 提交计算任务时,函数在独立的计算环境中运行,Notebook 等待或收集任务结果。 计算函数应通过参数接收数据,并自行导入所需依赖。Notebook 中的全局变量和已创建的客户端不会自动成为计算函数的可用状态。 以一个区块数据 Pipeline 为例,驱动过程如下:- 确定可处理范围。 脚本读取触发源和依赖表的处理进度,将计算范围限制在数据已准备好的区块内。
- 找出目标表缺口。 历史回填根据目标表的已处理区间,选择尚未完成的区块。
- 提交计算任务。 任务根据源记录生成函数输入,BlockX 并行执行各次调用,脚本等待或收集任务状态。
- 写入并记录进度。 结果处理器将返回记录写入目标表,BlockDB 同时维护该表的区块覆盖。没有匹配记录的已处理区块也需要留下进度。
- 持续追踪新数据。 持续更新在补齐缺口后订阅后续变化,再重复上述过程。