This is useful for functions that are "flaky", such as curl, which may fail for unknown
reasons that do not persist.
retry(
expr,
envir = parent.frame(),
retries = 5,
exponentialDecayBase = 1.3,
silent = TRUE,
exprBetween = NULL,
messageFn = message
)An expression to run, i.e., rnorm(1), similar to what is passed to try
The environment in which to evaluate the quoted expression, default
to parent.frame(1)
Numeric. The maximum number of retries.
Numeric > 1.0. The delay between
successive retries will be runif(1, min = 0, max = exponentialDecayBase ^ i - 1)
where i is the retry number (i.e., follows seq_len(retries))
Logical indicating whether to try silently.
Another expression that should be run after a failed attempt
of the expr. This should return a named list, where the names indicate the object names
to update in the main expr, and the return value is the new value. (previous versions allowed
a non-list return, but where the final line had to be an assignment operator,
specifying what object (that is used in expr) will be updated prior to running
the expr again. For backwards compatibility, this still works).
A function for messaging to console. Defaults to message
As with try, so the successfully returned return() from the expr or a try-error.