Условно на API Время ответа на запрос? - PullRequest
0 голосов
/ 23 февраля 2020

Я делаю несколько вызовов API Google Analytics, так как мне нужно получить запрос в течение многих лет.

library(googleAuthR)
library(googleAnalyticsR)
library(tidyverse)
library(lubridate)

my_fetch <- function(ga_id, d1, d2) {
  google_analytics(ga_id,
                   date_range = c(d1, d2),
                   metrics = c("totalEvents"),
                   dimensions = c("ga:date", "ga:eventCategory", "ga:eventAction", "ga:eventLabel"),
                   anti_sample = TRUE)
}

Я использую mapply для вызова своей выборки с несколькими переменными:

my_fetches_fetches <- mapply(my_fetch, an_viewID, my_dates$start, my_dates$end, SIMPLIFY = FALSE)

А потом я снова связываю все df:

total <- do.call(rbind, my_fetches_fetches)

Но внутри функции my_fetch у меня проблемы, потому что, очевидно, есть много данных для некоторых вызовы API.

Так что я бы хотел пропустить конкретную выборку, если она занимает больше времени, чем n минут, и длится до 5 минут. И переходить к следующей выборке.

Вот так я генерирую диапазоны дат:

make_date_ranges <- function(start, end = Sys.Date() - 1){

  from <- as.Date(start)
  to <- as.Date(end)
  d <- seq(from, to, by = "1 days")
  n <- length(d)
  chunk <- 3
  f <- rep(1:((n %/% chunk) + 1), each = chunk, length.out = n)


  lst1 <- split(d, f)    
  out <- data.frame(start = do.call(c, lapply(lst1, `[`, 1)), 
                     end = do.call(c, lapply(lst1, `[`, 3)))
  i1 <- lengths(lst1) < 3
  out$end[i1] <-  do.call(c, lapply(lst1[i1], tail, 1))
  return(out)
}


## useage
my_dates <- make_date_ranges(as.Date("2019-01-01"), as.Date("2019-12-31"))
...