Quellcode durchsuchen

d03 Эксперимент: самоперезапуск каждые 2 часа

SVI vor 2 Jahren
Ursprung
Commit
5554a8c42a
1 geänderte Dateien mit 12 neuen und 0 gelöschten Zeilen
  1. 12 0
      server/serv_bots/warbot/warbot.go

+ 12 - 0
server/serv_bots/warbot/warbot.go

@@ -6,6 +6,7 @@ import (
 	"fmt"
 	"log"
 	"strings"
+	"time"
 
 	"wartank/pkg/components/safebool"
 	"wartank/pkg/types"
@@ -57,8 +58,19 @@ func ЗагрузитьВарБот(сервер types.ИСервер, логи
 	if err != nil {
 		return nil, fmt.Errorf("ЗагрузитьВарБот(): in make core for bot %q, err=\n\t%w", логин, err)
 	}
+	go sf.рестарт()
 	return sf, nil
+}
 
+// Каждые два часа перезапускает себя
+func (сам *ВарБот) рестарт() {
+	time.Sleep(time.Hour * 2)
+	сам.Закончить()
+	сам, ош := ЗагрузитьВарБот(сам.сервер, сам.конфиг.Логин_)
+	if ош != nil {
+		panic(fmt.Errorf("ВарБот.рестарт(): при загрузке своего тела, ош=\n\t%w", ош))
+	}
+	log.Printf("ВарБот.рестарт(): бот %q перезагружен\n", сам.конфиг.Логин_)
 }
 
 // НовВарБот -- возвращает новый WarBot