在某个定时爬取数据的任务中,因为执行任务时各种原因存在使得任务在第一次执行的时候失败,但是任务脚本并不存在任何问题,因此此时需要设置失败的时候继续重新执行任务。
为了解决这个问题,可以使用循环,我的解决逻辑如下:
#循环执行5次
for loop in 1 2 3 4 5
do
echo“This is the $loop try!”
pythonmyCrawler.py params #执行我的定时任务
if [ ${?}-ne 0 ]; #判断定时任务执行的状态吗是否失败
then
if [ $loop -eq 5 ] #在5次尝试都失败后发出报警信息
then send_error "python myCrawler.py params error and theloop is $loop"
sleep 10s #在下次执行之前先暂停10s
exit 1
fi
continue #跳出当前循环执行下一次循环任务
fi
echo "成功" #成功之后在界面打印成功状态
break #成功之后跳出所有循环
done #for循环结束标志
解决这个问题需要关注的是任务的要求:
1. 任务第一次执行会失败,但是再次执行可能会成功,那么需要尝试5次
2. 如果第5次尝试仍旧失败,需要发出报警信息
3. 任务执行失败的原因可能是任务之间执行的太紧凑,可以设置任务之间的执行间隔即sleep一段时间
4. 如果任务在某次成功之后,不再执行其它的循环,即循环要及时停止