Example #1
0
//create another main() to run the overseer process
//and then convert your old main() into a 'prog(state)'
func main() {

	log.Println("Main: start PID: ", os.Getpid(), os.Getppid())
	for _, env := range os.Environ() {
		if strings.HasPrefix(env, "GO") {
			log.Println("Main env: ", env)
		}
	}

	// Следует иметь в виду, что oerseer запускает два процесса.
	// Первый - процесс мониторинга занимается проверкой обновлений и принимает запросы
	// Второй - собственно процесс обработки запросов. Он перезапускается при обновлении
	// или если первый процесс получает сигнал SIGUSR2 (по умолчанию, может быть переопределён)
	// Overseer не является менеджером процессов. Если второй процесс завершится по каким-то причинам,
	// то будет завершен и первый.
	overseer.Run(overseer.Config{
		// Debug: true,
		Program:    prog,
		PreUpgrade: checkBinary,
		Address:    ":3000",
		Fetcher: &fetcher.HTTP{
			// Для тестирования в отдаче файла лучше всего воспользоваться `webfsd -F -p 4000 -l -`
			// Он отдаёт корректные заголовки при изменении файла
			URL:      "http://localhost:4000/overseer-test",
			Interval: 5 * time.Second,
		},
	})
}
Example #2
0
//then create another 'main' which runs the upgrades
//'main()' is run in the initial process
func main() {
	overseer.Run(overseer.Config{
		Program: prog,
		Address: ":5001",
		Fetcher: &fetcher.HTTP{
			URL:      "http://localhost:5002/myappnew",
			Interval: 1 * time.Second,
		},
		Debug: false, //display log of overseer actions
	})
}
Example #3
0
func main() {
	c := struct {
		URL  string `type:"arg" help:"<url> of where to GET the binary"`
		Port int    `help:"listening port"`
		Log  bool   `help:"enable logging"`
	}{
		Port: 3000,
		Log:  true,
	}
	opts.Parse(&c)
	overseer.Run(overseer.Config{
		Log: c.Log,
		Program: func(state overseer.State) {
			//noop
			select {}
		},
		Address: ":" + strconv.Itoa(c.Port),
		Fetcher: &fetcher.HTTP{
			URL:      c.URL,
			Interval: 1 * time.Second,
		},
	})
}