From 45dc15ae8f06fc04cf9fb07c9ad4bc58e47aa348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=9C=E8=8F=AF?= Date: Mon, 29 May 2023 08:51:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=E4=BB=A3=E7=A2=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/Model.go | 2 ++ models/Server.go | 32 +++++++++++++++++++------------- routers/servers.go | 12 +++--------- test.sh | 3 ++- update.sh | 2 +- 5 files changed, 27 insertions(+), 24 deletions(-) diff --git a/models/Model.go b/models/Model.go index d9fd153..640f3ce 100644 --- a/models/Model.go +++ b/models/Model.go @@ -42,6 +42,8 @@ func (model *Model) Train() (err error) { var server Server if err = configs.ORMDB().Where("status = ?", "閒置").First(&server).Error; err != nil { fmt.Println(err) + // TOOD: 沒有空閒的訓練機, 訓練排隊, 等待訓練機空閒 + // TODO: 如果訓練機數量低於10臺, 則創建新的訓練機 return } diff --git a/models/Server.go b/models/Server.go index fb327eb..598b026 100644 --- a/models/Server.go +++ b/models/Server.go @@ -3,6 +3,7 @@ package models import ( "encoding/json" "fmt" + "log" "main/configs" "net/http" "time" @@ -22,28 +23,38 @@ type Server struct { UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"` } -func (server *Server) CheckStatus() bool { +func (server *Server) CheckStatus() (err error) { + // 不用類型的模型有不同的狀態檢查方式 + if server.Type == "train" { + } + resp, err := http.Get(fmt.Sprintf("http://%s:%d/status", server.IP, server.Port)) if err != nil { - return false + log.Println("服務器狀態異常", err) + server.Status = "異常" + return } defer resp.Body.Close() // 解碼json var data map[string]interface{} - if err := json.NewDecoder(resp.Body).Decode(&data); err != nil { - return false + if err = json.NewDecoder(resp.Body).Decode(&data); err != nil { + return } - fmt.Println("data:", data) + log.Println("data:", data) // 檢查服務器是否正常 if data["status"] != "ok" { - return false + log.Println("服務器狀態異常", err) + server.Status = "異常" + return } + configs.ORMDB().Save(&server) + // 檢查服務器是否正常 - return true + return } func init() { @@ -62,11 +73,6 @@ func init() { var servers []Server configs.ORMDB().Find(&servers) for _, server := range servers { - if server.Status != "異常" { - if !server.CheckStatus() { - server.Status = "異常" - configs.ORMDB().Save(&server) - } - } + server.CheckStatus() } } diff --git a/routers/servers.go b/routers/servers.go index 6c272b9..3d629b2 100644 --- a/routers/servers.go +++ b/routers/servers.go @@ -24,15 +24,9 @@ func ServersGet(w http.ResponseWriter, r *http.Request) { // 獲取服務器列表 db.Offset((listview.Page - 1) * listview.PageSize).Limit(listview.PageSize).Find(&server_list) for _, server := range server_list { - // 驗證服務器狀態 - resp, err := http.Get(fmt.Sprintf("http://%s:%d/docs", server.IP, server.Port)) - if err != nil || resp.StatusCode != http.StatusOK { - server.Status = "異常" - } else { - server.Status = "正常" - } - // 讀取模型信息 - resp, err = http.Get(fmt.Sprintf("http://%s:%d/sdapi/v1/sd-models", server.IP, server.Port)) + server.CheckStatus() // 驗證服務器狀態 + //// 讀取模型信息 + resp, err := http.Get(fmt.Sprintf("http://%s:%d/sdapi/v1/sd-models", server.IP, server.Port)) if err != nil || resp.StatusCode != http.StatusOK { server.Models = []map[string]interface{}{} } else { diff --git a/test.sh b/test.sh index 136a32f..4e36231 100755 --- a/test.sh +++ b/test.sh @@ -5,7 +5,8 @@ start_time=$(date +%s) rm -f data/sqlite3.db # 流程測試, 啓動服務, 設定進程名 go_test, 並將日誌隱藏 -go run main.go -procname go_test > /dev/null 2>&1 & +#go run main.go -procname go_test > /dev/null 2>&1 & +go run main.go -procname go_test & sleep 2 diff --git a/update.sh b/update.sh index 16b0dd7..46b4900 100755 --- a/update.sh +++ b/update.sh @@ -8,7 +8,7 @@ go build -o data/gameui-ai-server main.go scp ./data/gameui-ai-server root@47.103.40.152:~/gameui-ai-server_new rm -rf ./data/gameui-ai-server -# 重啓服務 +# 重啓服務(RAM) ssh root@47.103.40.152 ''' ps -ef | grep -v grep | grep ./gameui-ai-server; if [ $? -eq 0 ]; then