整理代碼
This commit is contained in:
@@ -42,6 +42,8 @@ func (model *Model) Train() (err error) {
|
|||||||
var server Server
|
var server Server
|
||||||
if err = configs.ORMDB().Where("status = ?", "閒置").First(&server).Error; err != nil {
|
if err = configs.ORMDB().Where("status = ?", "閒置").First(&server).Error; err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
|
// TOOD: 沒有空閒的訓練機, 訓練排隊, 等待訓練機空閒
|
||||||
|
// TODO: 如果訓練機數量低於10臺, 則創建新的訓練機
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,6 +3,7 @@ package models
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"main/configs"
|
"main/configs"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
@@ -22,28 +23,38 @@ type Server struct {
|
|||||||
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
|
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))
|
resp, err := http.Get(fmt.Sprintf("http://%s:%d/status", server.IP, server.Port))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
log.Println("服務器狀態異常", err)
|
||||||
|
server.Status = "異常"
|
||||||
|
return
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
// 解碼json
|
// 解碼json
|
||||||
var data map[string]interface{}
|
var data map[string]interface{}
|
||||||
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
|
if err = json.NewDecoder(resp.Body).Decode(&data); err != nil {
|
||||||
return false
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("data:", data)
|
log.Println("data:", data)
|
||||||
|
|
||||||
// 檢查服務器是否正常
|
// 檢查服務器是否正常
|
||||||
if data["status"] != "ok" {
|
if data["status"] != "ok" {
|
||||||
return false
|
log.Println("服務器狀態異常", err)
|
||||||
|
server.Status = "異常"
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configs.ORMDB().Save(&server)
|
||||||
|
|
||||||
// 檢查服務器是否正常
|
// 檢查服務器是否正常
|
||||||
return true
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -62,11 +73,6 @@ func init() {
|
|||||||
var servers []Server
|
var servers []Server
|
||||||
configs.ORMDB().Find(&servers)
|
configs.ORMDB().Find(&servers)
|
||||||
for _, server := range servers {
|
for _, server := range servers {
|
||||||
if server.Status != "異常" {
|
server.CheckStatus()
|
||||||
if !server.CheckStatus() {
|
|
||||||
server.Status = "異常"
|
|
||||||
configs.ORMDB().Save(&server)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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)
|
db.Offset((listview.Page - 1) * listview.PageSize).Limit(listview.PageSize).Find(&server_list)
|
||||||
for _, server := range server_list {
|
for _, server := range server_list {
|
||||||
// 驗證服務器狀態
|
server.CheckStatus() // 驗證服務器狀態
|
||||||
resp, err := http.Get(fmt.Sprintf("http://%s:%d/docs", server.IP, server.Port))
|
//// 讀取模型信息
|
||||||
if err != nil || resp.StatusCode != http.StatusOK {
|
resp, err := http.Get(fmt.Sprintf("http://%s:%d/sdapi/v1/sd-models", server.IP, server.Port))
|
||||||
server.Status = "異常"
|
|
||||||
} else {
|
|
||||||
server.Status = "正常"
|
|
||||||
}
|
|
||||||
// 讀取模型信息
|
|
||||||
resp, err = http.Get(fmt.Sprintf("http://%s:%d/sdapi/v1/sd-models", server.IP, server.Port))
|
|
||||||
if err != nil || resp.StatusCode != http.StatusOK {
|
if err != nil || resp.StatusCode != http.StatusOK {
|
||||||
server.Models = []map[string]interface{}{}
|
server.Models = []map[string]interface{}{}
|
||||||
} else {
|
} else {
|
||||||
|
3
test.sh
3
test.sh
@@ -5,7 +5,8 @@ start_time=$(date +%s)
|
|||||||
rm -f data/sqlite3.db
|
rm -f data/sqlite3.db
|
||||||
|
|
||||||
# 流程測試, 啓動服務, 設定進程名 go_test, 並將日誌隱藏
|
# 流程測試, 啓動服務, 設定進程名 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
|
sleep 2
|
||||||
|
|
||||||
|
|
||||||
|
@@ -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
|
scp ./data/gameui-ai-server root@47.103.40.152:~/gameui-ai-server_new
|
||||||
rm -rf ./data/gameui-ai-server
|
rm -rf ./data/gameui-ai-server
|
||||||
|
|
||||||
# 重啓服務
|
# 重啓服務(RAM)
|
||||||
ssh root@47.103.40.152 '''
|
ssh root@47.103.40.152 '''
|
||||||
ps -ef | grep -v grep | grep ./gameui-ai-server;
|
ps -ef | grep -v grep | grep ./gameui-ai-server;
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
|
Reference in New Issue
Block a user