Example #1
0
func GetMConn(k string) *mgo.Session {
	var m_conn *mgo.Session = getMConn(k)
	var n = time.Second
	for {
		if err := m_conn.Ping(); err != nil {
			fmt.Printf("mongodb断开连接,%d秒后开始重连", n/time.Second)
			m_conn.Refresh()
		} else {
			if n/time.Second > 1 {
				fmt.Printf("重连成功")
			}
			break
		}
		fmt.Println("正在尝试重连")
		time.Sleep(n)
		n = n * 2
		//最大重连间隔时长:10分钟
		if n > 600*time.Second {
			n = 600 * time.Second
		}
	}

	return m_conn
}