Как автоматически перезапустить веб-сервер, если он остановлен - PullRequest
0 голосов
/ 13 марта 2019

Я попытался применить механизм, позволяющий автоматически перезапускать веб-сервер go при его остановке.

То, как я это делаю, помещая server.ListenAndServe() в бесконечный цикл. Так как .ListenAndServe() блокирует, я чувствовал, что это нормально. Вот полный код:

func main() {
    // ...

    isStarted := false
    for true {
        if isStarted {
            fmt.Println("===================================== RESTARTING WEB SERVER")
        }

        log.Println(server.ListenAndServe())
        isStarted = true

        time.Sleep(1 * time.Second)
    }
}

Когда я запускаю приложение, все происходит совсем не так, как я ожидал. Веб-сервер не запускается.

Я делаю это неправильно? или есть какой-то лучший и правильный путь? Заранее спасибо

===================================== RESTARTING WEB SERVER
2019/03/13 10:01:03 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:04 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:05 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:06 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:07 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:08 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:09 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:10 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:11 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:12 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:13 http: Server closed
===================================== RESTARTING WEB SERVER
2019/03/13 10:01:14 http: Server closed

1 Ответ

2 голосов
/ 13 марта 2019

Вам нужна система управления процессом.Это позволяет вам запускать и контролировать ряд процессов.

Пример: Systemd, Supervisord

Хорошим вариантом является Supervisord.

Прочтите документацию по http://supervisord.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...