diff --git a/backend/database/mongo.go b/backend/database/mongo.go index e72baeaa..d646285d 100644 --- a/backend/database/mongo.go +++ b/backend/database/mongo.go @@ -61,10 +61,36 @@ func InitMongo() error { dialInfo.Password = mongoPassword dialInfo.Source = mongoAuth } - sess, err := mgo.DialWithInfo(&dialInfo) - if err != nil { - return err + + // mongo session + var sess *mgo.Session + + // 错误次数 + errNum := 0 + + // 重复尝试连接mongo + for { + var err error + + // 连接mongo + sess, err = mgo.DialWithInfo(&dialInfo) + + if err != nil { + // 如果连接错误,休息1秒,错误次数+1 + time.Sleep(1 * time.Second) + errNum++ + + // 如果错误次数超过30,返回错误 + if errNum >= 30 { + return err + } + } else { + // 如果没有错误,退出循环 + break + } } + + // 赋值给全局mongo session Session = sess } return nil diff --git a/backend/model/node.go b/backend/model/node.go index d662ab6d..2fe810f8 100644 --- a/backend/model/node.go +++ b/backend/model/node.go @@ -55,7 +55,7 @@ func GetCurrentNode() (Node, error) { for { // 如果错误次数超过10次 if errNum >= 10 { - panic("cannot get current node") + return node, errors.New("cannot get current node") } // 尝试获取节点 diff --git a/docker_init.sh b/docker_init.sh index 8c256839..97c505dc 100755 --- a/docker_init.sh +++ b/docker_init.sh @@ -22,10 +22,5 @@ fi # start nginx service nginx start -# wait for mongo service to be ready -#/app/wait-for-it.sh $CRAWLAB_MONGO_HOST:$CRAWLAB_MONGO_PORT - -# wait for redis service to be ready -#/app/wait-for-it.sh $CRAWLAB_REDIS_ADDRESS:$CRAWLAB_REDIS_PORT - +# start backend crawlab \ No newline at end of file