#4080·crawlee

启动期间的 BasicCrawler.teardown() 可能会拒绝或留下 run() 处于挂起状态

作者: nikitachapovskii-dev创建于 2026年8月28日更新于 2026年8月28日
标签t-tooling

□ 内容

我不确定是不是V4回归 似乎在v3中已经存在倒地跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑 正确的知道它影响测试 wcc sitemap爬行者。 测试是绿色的,因为捕获(lol),但爬行器失败了.

□ 此错误报告用于哪些软件包 ?

`crawlee/基础'

□ 问题描述

如果在运行'仍在完成初始化时称为eardown ()',但在autoscaledPool.run ()'开始之前,结果取决于货币系统 ' 的所有权:

  • 采用默认的爬行者拥有的系统,跑()'拒绝,因为快跑()'在游泳池开始前停止系统。
  • 采用注射式系统, " 运行 " 将无限期地等待。

在第二种情况下,AutoscaledPool.abrt ()'标出水池在运行解析器存在之前已停止。 当AutoscaledPool.run ()' 稍后开始时,被停止的池从未解决或拒绝其新产生的承诺。

预期行为:一旦crawler.run ()' 开始,称为await crawer.teardown ()' ,就应当总是使运行中,包括在初始化期间,实现和解。

□ 代码样本

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? 从“ node:timers/ promises” 导入 { setTimeout as delay } ;

从“ @ crawlee/ basic” 导入{ BasicCrawler} ; 从“ @ crawlee/ core” 导入{货币体系};

async 函数复制( 货币系统) { 已初始化 = 承诺。 与 Resolvers (); Const represent = promise. with Resolvers (); 互联网档案馆的存檔,存档日期2013-12-21.

类 延迟 crawler 扩展 BasicCrawler { async init () { 等待超级.init( ); 已初始化. resolve( ); 等待恢复. 保证; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

Const 爬行器 = 新延迟爬行器 ({ ) 真实的, ...(货币体系 { 货币体系} ), 请求汉德勒: Aync () => {},

  • ;

承诺=爬行者. 跑 (); 承诺 = 运行 承诺 .when( (已解决) `拒绝:${EROR.message}, (三)

等待初始化。 承诺; 等待爬行者.teardown( ); ; 正在等待。 release.resolve () (中文(简体) ).

Cont result = 等待承诺.race([ 承诺, 延迟( 1 000, “待定”) , (b) 与《公约》有关的其他事项

a. 控制台.log( 货币系统? “ 注入: ” : “ 拥有: ” , 结果);

/ 清理未决案件。 如果( 结果 QQ “ 待定 ”) { 等待爬行者.teardown( ); ; 正在等待。 等待结果 承诺; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

等待复制( );

算法=新算法({最大货币: 1}); 等待货币体系. start (); 等待复制(货币体系); 等待货币体系.stop();


输出 :

页:1
拥有: 已拒绝 : 此自动缩放Pool 借入的货币系统尚未启动...
注射:待定

在 Crawlee v3 中也可以重现未决的中止运行前行为. 拥有的 " 货币体系 " 拒绝是同一生命周期种族的新v4的表现。

□ 软件包版本