Como parar a execução de RCurl :: getURL () se estiver demorando muito?
Existe uma maneira de dizer ao R ou ao pacote RCurl que desista de tentar baixar uma página da Web se exceder um período especificado e passar para a próxima linha de código? Por exemplo
> library(RCurl)
> u = "http://photos.prnewswire.com/prnh/20110713/NY34814-b"
> getURL(u, followLocation = TRUE)
> print("next line") # programme does not get this far
Isso ficará travado no meu sistema e não prosseguirá para a linha fina
EDIT: Com base na resposta de Richie Cotton, abaixo, embora eu possa 'alcançar o que quero', não entendo por que demora mais do que o esperado. Por exemplo, se eu fizer o seguinte, o sistema travará até selecionar / desmarcar a opção 'Misc >> Buffered Output' no RGUI:
> system.time(getURL(u, followLocation = TRUE, .opts = list(timeout = 1)))
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
Operation timed out after 1000 milliseconds with 0 out of 0 bytes received
Timing stopped at: 0.02 0.08 ***6.76***
SOLUTION: Com base na postagem de @ Duncan abaixo e, posteriormente, analisando os documentos de curl, encontrei a solução usando a opção maxredirs da seguinte maneira:
> getURL(u, followLocation = TRUE, .opts = list(timeout = 1, maxredirs = 2, verbose = TRUE))
Obrigado,
Tony Breyal
O/S: Windows 7
R version 2.13.0 (2011-04-13) Platform: x86_64-pc-mingw32/x64 (64-bit)
attached base packages:
[1] stats graphics grDevices utils
datasets methods base
other attached packages:
[1] RCurl_1.6-4.1 bitops_1.0-4.1
loaded via a namespace (and not attached):
[1] tools_2.13.0