【发布时间】:2017-09-25 20:27:44
【问题描述】:
我必须运行一个长循环来更新一些数据并将其存储在我公司的服务器中。问题是该公司在午夜运行备份例程,为此,他们关闭了服务器大约 15 分钟。
所以,鉴于我必须为每次迭代写下一个文件,当服务器出现故障时,它会中断循环。
我设法通过如下编写循环来规避问题
for(i in bills.list){
url = paste0("ulalah",i,"/")
# Download the data
bill.result <- try(getURL(url)) # if there is an error try again
while(class(bill.result)=="try-error"){
Sys.sleep(1)
bill.result <- try(getURL(url))
}
# if iteration is between 23:59:00 and 23:59:40 wait 17 min to restart the loop
if(as.numeric(format(Sys.time(), "%H%M%S")) > 235900 &
as.numeric(format(Sys.time(), "%H%M%S")) < 235940){
Sys.sleep(1020)
}
# Write the page to local hard drive
write(bill.result, paste0("bill", i, ".txt"))
# Print progress of download
cat(i, "\n")
}
问题是,通过评估所有迭代的时间,我失去了一些宝贵的时间。还有更有效的想法吗?
【问题讨论】: