pyspider 关于任务
2023-02-16 16:06 更新
关于任务
任务是要安排的基本单位。
基础
- 任务因其而异taskid。(默认值:md5(url),可以通过覆盖def get_taskid(self, task)方法更改)
- 任务在不同项目之间隔离。
- 任务有4个状态:活性失败成功坏 - 没用过
- 仅安排处于活动状态的任务。
- 任务按顺序提供priority。
时间表
新任务
当一项新任务(从未见过)进来时:
- 如果exetime已设置但未到达,则将其置于基于时间的队列中以等待。
- 否则将被接受。 当任务已经在队列中时:
- 除非被忽略 force_update 完成任务后:
如果age设置,last_crawl_time + age < now将被接受。否则丢弃。 如果itag设置且不等于它的先前值,则将被接受。否则丢弃。
任务重试
发生提取错误或脚本错误时,默认情况下该任务将重试3次。
第一次重试将在30秒,1小时,6小时,12小时后每次执行,并且任何更多重试将推迟24小时。
如果age指定,则重试延迟不会大于age。
您可以通过添加名为retry_delayhandler 的变量来配置重试延迟。retry_delay是一个指定重试间隔的字典。dict中的项目是{recoied:seconds},还有一个特殊键:''(空字符串)用于指定默认的重试延迟(如果未指定)。
例如,默认retry_delay声明如:
class MyHandler(BaseHandler):
retry_delay = {
0: 30,
1: 1*60*60,
2: 6*60*60,
3: 12*60*60,
'': 24*60*60
}
以上内容是否对您有帮助:
更多建议: