-
Notifications
You must be signed in to change notification settings - Fork 52
Closed
r-lib/gargle
#298Description
I'm running a process that updates a variety of sheets for a student information / data collection project for a school district. It loops through a series of grades at a series of schools, reading data from a set of sheets, doing some minimal processing, copying a blank template sheet, and re-writing the data.
Occasionally, Google times out. I've surrounded code with tryCatch, which helps, but sometimes I get an error like the one below that fails in a way tryCatch doesn't see and allow me to perform error handling.
I assume it's caused by Google being 'busy' or taking too long to process a specific request, but it would be nice if error handling could catch it reasonably gracefully.
✖ Request failed [429]. Retry 4 happens in 41.9 seconds ...
Error in `fun(..., .envir = .envir)`:
! Could not evaluate cli `{}` expression: `project`.
Caused by error in `eval(expr, envir = envir)`:
! object 'project' not found
Type .Last.error to see the more details.
> .Last.error
<rlib_error_3_0/rlib_error/error>
Error in `fun(..., .envir = .envir)`:
! Could not evaluate cli `{}` expression: `project`.
Caused by error in `eval(expr, envir = envir)`:
! object 'project' not found
---
Backtrace:
1. base::tryCatch(update_dibels_students(b, g, parent_folder = dibels_parent_folder, …
2. base::tryCatchList(expr, classes, parentenv, handlers)
3. global update_dibels_students(b, g, parent_folder = dibels_parent_folder, …
4. googlesheets4::gs4_get(working_sheet) at localfunctions.r:130:5
5. googlesheets4:::gs4_get_impl_(as_sheets_id(ss))
6. gargle::response_process(raw_resp)
7. gargle:::gargle_abort_request_failed(error_message(resp, call = call), …
8. gargle:::gargle_abort(message, class = c("gargle_error_request_failed", …
9. cli::cli_abort(message, class = c(class, "gargle_error"), .envir = .envir, …
10. cli:::vcapply(message, format_inline, .envir = .envir)
11. base::vapply(X, FUN, FUN.VALUE = character(1), ..., USE.NAMES = USE.NAMES)
12. local FUN(X[[i]], ...)
13. cli::cli_fmt(fun(..., .envir = .envir), collapse = collapse, strip_newline = TRUE)
14. cli:::cli__rec(expr)
15. local fun(..., .envir = .envir)
16. cli:::cli__message("inline_text", list(text = glue_cmd(..., .envir = .envir, …
17. "id" %in% names(args)
18. cli:::glue_cmd(..., .envir = .envir, .call = sys.call(), .trim = FALSE)
19. cli:::glue(str, .envir = .envir, .transformer = transformer, .cli = TRUE, …
20. (function (expr) …
21. .transformer(expr, .envir) %||% character()
22. local .transformer(expr, .envir)
23. eval(expr, envir = envir) %??% cli_error(call. = caller, "Could not evaluate cli {.c…
24. cli:::chain_error(expr, err, srcref = utils::getSrcref(sys.call()))
25. | base::withCallingHandlers({ …
26. base::eval(expr, envir = envir)
27. base::eval(expr, envir = envir)
28. base::.handleSimpleError(function (e) …
29. | local h(simpleError(msg, call))
30. | cli:::throw_error(err, parent = e)
Metadata
Metadata
Assignees
Labels
No labels