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