package bgrun

import "zgo.at/goatcounter/v2/bgrun"

Package bgrun runs jobs in the background.

This is mostly intended for "fire and forget" type of goroutines like sending an email. They typically don't really need any synchronisation as such but you do want to wait for them to finish before the program exits, or you want to wait for them in tests.

Index

Functions

func Run

func Run(name string, f func())

Run the function in a goroutine.

bgrun.Run(func() {
    // Do work...
})

func RunNoDuplicates

func RunNoDuplicates(name string, f func())

RunNoDuplicates is like Run(), but only allows one instance of this name.

It will do nothing if there's already something running with this name.

func Running

func Running(name string) bool

Running reports if a function by this name is already running.

func Wait

func Wait(ctx context.Context) error

Wait for all goroutines to finish for a maximum of maxWait.

func WaitAndLog

func WaitAndLog(ctx context.Context)

WaitAndLog calls Wait() and logs any errors.

func WaitProgress

func WaitProgress(ctx context.Context) error

WaitProgress calls Wait() and prints which tasks it's waiting for.

func WaitProgressAndLog

func WaitProgressAndLog(ctx context.Context)

WaitProgressAndLog calls Wait(), prints which tasks it's waiting for, and logs any errors.

Types

type Job

type Job struct {
	Name         string
	From         string
	NoDuplicates bool
	Started      time.Time
	Finished     time.Time
}

func History

func History() []Job

History gets the last 10,000 jobs that ran.

func List

func List() []Job

List returns all running functions.

Source Files

bgrun.go

Version
v2.2.3
Published
Feb 16, 2022
Platform
linux/amd64
Imports
12 packages
Last checked
10 minutes ago

Tools for package owners.