#4141·crawlee

在 4.0 之前决定 `ContextPipelineInterruptedError` 的公共状态

作者: janbuchar创建于 2026年9月18日更新于 2026年9月22日
标签t-tooling
  • 与 #3264 有关 - 目前从 preNavigationHooks / extendContext 中抛出它是跳过请求的唯一方法,而不计入失败 - 不重试,不 requestsFailed,不记录错误日志,请求被标记为已处理。它取代了 noRetry + 抛出 + 减少 requestsFailed + 修补 log.error 的 v3 审计。 - 它从 @crawlee/basic 中以 @public 形式导出,但没有 JSDoc 或指南条目,其消息提到"上下文初始化",只有在管道中间件中才会受到尊重(从 requestHandler 中,它被包装为 RequestHandlerError 并被视为正常失败),它绕过 onSkippedRequest 并从未设置 request.state = SKIPPED,并且请求事务会回滚在抛出之前写入的任何内容。 - 有两种出路: 赞许它(记录它,从 requestHandler 中也尊重它,通过与 robots.txt / 重定向跳过相同的跳过记账路径传递它),或者现在将其标记为 @internal 并添加 context.skipRequest(reason?) 作为公共 API。 - 取消导出它并更改 requestHandler 对其的处理方式在稳定之前都很便宜; skipRequest() 本身是增量的,可以跟进。