Skip to content

Implements fetcher runner by Cron instead of Config.MinFetchInterval#29

Open
moisespsena wants to merge 6 commits into
jpillora:masterfrom
moisespsena-go:crontab
Open

Implements fetcher runner by Cron instead of Config.MinFetchInterval#29
moisespsena wants to merge 6 commits into
jpillora:masterfrom
moisespsena-go:crontab

Conversation

@moisespsena

Copy link
Copy Markdown

Using default cron instance

import (
	"github.com/robfig/cron"
)

func main() {
	schedule, _ := cron.Parse("@daily")

	overseer.Run(overseer.Config{
		Program: prog,
		Address: ":3000",
		
		FetchCronSchedule: &schedule,
	})
}

Using your cron instance

import (
	"github.com/robfig/cron"
)

func main() {
	Cron := cron.New()
	Cron.Start()
	defer Cron.Stop()
	
	schedule, _ := cron.Parse("@daily")

	overseer.Run(overseer.Config{
		Program: prog,
		Address: ":3000",
		
		Cron: Cron,
		FetchCronSchedule: &schedule,
	})
}

@jpillora

Copy link
Copy Markdown
Owner

Thanks for the PR, however I intentionally left out the fetch interval from the main config, and left it to each fetcher to implement their own simple logic. For example the S3 fetcher, defaults to 5 minutes whereas the file fetcher defaults to 1 second, if the setting were in the main config (in the form of a duration or a cron schedule) then sane defaults would not be possible. I should probably make this clearer in the docs.

Maybe a cron helper might be useful:

func main() {
	overseer.Run(overseer.Config{
		Program: prog,
		Address: ":3000",
		Fetcher: &fetcher.HTTP{
			URL:      "http://localhost:4000/binaries/myapp",
			Interval: overseer.Cron("@daily"),
		},
	})
}

It would not need to return an error as this the user would not be writing cron strings, but rather it be hard-coded, or it be a selection of 4 interval options.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants