ntry: Call a function until it succeeds

Description Arguments Value Usage Details Examples

Description

Designed for accessing network resources that are unreliable, ntry will call a function up to n times, returning its result or fail.

Arguments

fn

A single argument function

n

The number of attempts to call the function

Value

The result of calling fn

Usage

ntry(fn, n) %::% Function : numeric : .

ntry(fn, n)

Details

Imagine a function that attempts to access a network resource, like a web service or database. Sometimes there will be network timeouts that you want to recover from, without having to change the application logic. This function allows you to do that, while specifying a maximum retry limit so as not to block the function forever.

This higher-order function will call the specified function up to n times, returning on the first successful call. The function fn is a closure that takes a single argument representing the attempt number.

If calling the function fails n times, then ntry will fail with an error.

Examples

1
2
3
4
5
6
7
8
9
## Not run: 
fn <- function(i) {
  x <- sample(1:4, 1)
  flog.info("x = %s",x)
  if (x < 4) stop('stop') else x
}
ntry(fn, 6)

## End(Not run)

lambda.tools documentation built on May 2, 2019, 4:28 a.m.