An open API service indexing awesome lists of open source software.

https://github.com/atomicgo/timeout

⏱️ Timeout helpers for Go - limit functions to a maximum execution time
https://github.com/atomicgo/timeout

atomicgo deadline go golang golang-library time timeout

Last synced: about 2 months ago
JSON representation

⏱️ Timeout helpers for Go - limit functions to a maximum execution time

Awesome Lists containing this project

README

        

AtomicGo | timeout


Downloads


Latest Release


Tests


Coverage


Unit test count


License: MIT



Go report

---


Documentation
|
Contributing
|
Code of Conduct

---


AtomicGo


go get atomicgo.dev/timeout



# timeout

```go
import "atomicgo.dev/timeout"
```

Package timeout provides a simple way to add timeouts to your Go code. The Execute function is blocking, so you can use it as a drop\-in replacement for your function calls. Timeouts are often useful in scripts, where you want to limit the execution time of a function.

```go
package main

import (
"atomicgo.dev/timeout"
"fmt"
"time"
)

func main() {
res, err := timeout.Execute(time.Second*2, func() (string, error) {
time.Sleep(time.Second * 1)
return "Hello, World!", nil
})

fmt.Println(res, err)
}
```

#### Output

```
Hello, World!
```

```go
package main

import (
"atomicgo.dev/timeout"
"fmt"
"time"
)

func main() {
res, err := timeout.Execute(time.Second*1, func() (string, error) {
time.Sleep(time.Second * 2)
return "Hello, World!", nil
})

fmt.Println(res, err)
}
```

#### Output

```
timeout reached
```

```go
package main

import (
"atomicgo.dev/timeout"
"errors"
"fmt"
"time"
)

func main() {
res, err := timeout.Execute(time.Second*2, func() (string, error) {
time.Sleep(time.Second * 1)
return "", errors.New("some error") // nolint: goerr113
})

fmt.Println(res, err)
}
```

#### Output

```
some error
```

## Index

- [Variables](<#variables>)
- [func Execute\[T any\]\(duration time.Duration, fn Function\[T\]\) \(T, error\)](<#Execute>)
- [type Function](<#Function>)

## Variables

ErrTimeoutReached is returned when the timeout is reached.

```go
var ErrTimeoutReached = errors.New("timeout reached")
```


## func [Execute]()

```go
func Execute[T any](duration time.Duration, fn Function[T]) (T, error)
```

Execute executes a function and returns the result or an error if the timeout is reached. If the timeout is reached, the Function will be interrupted. If the Function returns an error, the error will be returned.


## type [Function]()

Function is a function that returns a generic value and an error.

```go
type Function[T any] func() (T, error)
```

Generated by [gomarkdoc]()

---

> [AtomicGo.dev](https://atomicgo.dev)  · 
> with ❤️ by [@MarvinJWendt](https://github.com/MarvinJWendt) |
> [MarvinJWendt.com](https://marvinjwendt.com)