SuperAPI AI 工具集

dm-limits-and-best-practices

编程与开发

查看项目

更新于 10-15 20:14

技能介绍

用途:这是面向 CDF Data Modeling API 的参考技能,在编写或审查调用该 API 的代码时套用其中的模式,避免触发限流与死锁。

主要能力与要点:

  • 限制参考:instance 的 apply、delete、query 各有独立并发上限,超限返回 429;transformations 会占用大量并发预算;instances.list 有最大页大小;instances.query 各表表达式有各自条目上限;instances.upsert 每次最多 1000 条;in 过滤每个表达式最多 1000 个值,超出需分批。最新限制见官方文档 https://docs.cognite.com/cdf/dm/dm_reference/dm_limits_and_restrictions
  • 搜索与过滤:instances.search 用于文本模糊匹配,operator 支持 AND(默认,收窄)与 OR(扩大召回,适合 typeahead);filter 用于精确匹配(equals、range、in、hasData 等),可与 search 组合。
  • 并发控制:使用全局 cdfTaskRunner(QueuedTaskRunner 信号量,默认最大并发 15)包裹 CDF 调用,防止 429 与死锁;支持 key 去重,取消同 key 的旧请求。
  • 分页:instances.list 返回 nextCursor,需循环取全;instances.query 返回按表表达式命名的 cursors 对象,通过 cursors 参数翻页。
  • 批量写入:用 chunk 工具按 1000 条分批 upsert;删除并发更严格,示例使用独立 runner(并发 2)。

常见陷阱:嵌套信号量调用可能死锁,应让内层函数自行持有信号量;忘记分页会静默丢数据;无信号量的无界 Promise.all 会立即触发 429。

限制:具体并发数值、资源与属性值限制以官方文档为准,资料未给出全部数值;示例代码中的视图、容器等常量需按项目实际替换。