Я пытаюсь написать функцию ограничения скорости вручную для пакета rgithub
. Пока это то, что у меня есть:
library(rgithub)
pull <- function(i){
commits <- get.pull.request.commits(owner = owner, repo = repo, id = i, ctx = get.github.context(), per_page=100)
links <- digest_header_links(commits)
number_of_pages <- links[2,]$page
if (number_of_pages != 0)
try_default(for (n in 1:number_of_pages){
if (as.integer(commits$headers$`x-ratelimit-remaining`) < 5)
Sys.sleep(as.integer(commits$headers$`x-ratelimit-reset`)-as.POSIXct(Sys.time()) %>% as.integer())
else
get.pull.request.commits(owner = owner, repo = repo, id = i, ctx = get.github.context(), per_page=100, page = n)
}, default = NULL)
else
return(commits)
}
list <- c(500, 501, 502)
pull_lists <- lapply(list, pull)
Намерение состоит в том, что если переменная x-ratelimit-remaining
опускается ниже определенного порога, сценарий должен подождать, пока не пройдет время, указанное в x-ratelimit-reset
, а затем продолжить сценарий. Тем не менее, я не уверен, что это фактическое поведение if else
, которое у меня есть здесь.
Функция работает нормально, но у меня есть некоторые сомнения относительно того, действительно ли она ограничивает скорость или каким-то образом пропускает эти шаги. Поэтому я спрашиваю: а) как я могу узнать, действительно ли он ограничивает скорость, и б) если нет, как я могу переписать его так, чтобы он действительно ограничивал скорость? Будет ли лучше условие/цикл while
?
}, default = NULL)
не соответствует ничему выше. Не могли бы вы исправить это? Следующийelse
также не имеет соответствующегоif
выше. - person cmbarbu   schedule 21.03.2015