整理代碼
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