整理代碼
This commit is contained in:
		@@ -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
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user