Skip to content

Conversation

@niuxiaozu
Copy link
Contributor

1、修改site.sleepTime的意义,sleep的模式为当前spider所有请求都间隔site.sleepTime。
2、修改download成功后对状态码的处理,如果状态码不被site.acceptStatCode接收的话就算失败,进行doCycleRetry重试逻辑。 3、stopWhenComplete,增加动态修改完成时停止方法。

2、修改download成功后对状态码的处理,如果状态码不被site.acceptStatCode接收的话就算失败,进行doCycleRetry重试逻辑。 3、stopWhenComplete,增加动态修改完成时停止方法。
@sutra
Copy link
Collaborator

sutra commented Jun 17, 2024

sleepTime 就是纯粹的 sleep,没说是每个请求的时间分布。

@niuxiaozu
Copy link
Contributor Author

不是修改bug,只是做了点调整。还是希望能考虑一下
1、关于线程sleep,因为我看到现在的sleepTime只在某个工作线程下载成功后sleep了一下,我不清楚其意义,我想的是为了防止网站频繁请求导致访问受限,限制对某个domain的访问频率。
2、状态码如果不对的情况下,目前打印一个日志就退出了,在step by step的处理时,容易中断,所以就想着将错误状态码也按失败处理,虽说在某些场景中状态码错误就直接不管这个请求了也算合理,但也可以通过把所有错误码添加到site.acceptStatCode中实现。
3、现在的代码中如果某个请求出错了,需要重试时在多工作线程情况下会由另一个工作线程立即执行重试,感觉retrySleepTime这个参数好像失效了,所以也调整了下,在需要执行doCycleRetry之前在当前工作线程sleep。

@sutra
Copy link
Collaborator

sutra commented Jun 17, 2024

1、关于线程sleep,因为我看到现在的sleepTime只在某个工作线程下载成功后sleep了一下,我不清楚其意义,我想的是为了防止网站频繁请求导致访问受限,限制对某个domain的访问频率。

换个变量名吧,别使用 sleepTime。比如 requestInterval 之类的。

三个功能分开来提交,一个 PR 只包含一个修改。

@niuxiaozu
Copy link
Contributor Author

好的,没提过pr,我分一下,感谢回复。

@niuxiaozu niuxiaozu closed this Jun 17, 2024
@sutra
Copy link
Collaborator

sutra commented Jun 17, 2024

好的,没提过pr,我分一下,感谢回复。

拆成多个,每个 PR 只包含一个功能,那么没问题的就可以先合并进去,有疑问的继续讨论。

@niuxiaozu
Copy link
Contributor Author

调整重试逻辑 :https://github.com/code4craft/webmagic/pull/1170 增加stopWhenComplate方法:https://github.com/code4craft/webmagic/pull/1169
至于sleepTime的问题,我想了想,还是不提了,当时我也只是感觉sleepTime像是设计为处理两个请求的间隔用的,所以才做的调整,但了解到这个参数并非如此,就不管这个了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants