github.com/smugmug/godynamo@v0.0.0-20151122084750-7913028f6623/keepalive/keepalive.go (about)

     1  package keepalive
     2  
     3  import (
     4  	auth_v4 "github.com/smugmug/godynamo/auth_v4" // to get the Client
     5  	"log"
     6  	"time"
     7  )
     8  
     9  // dial the keep alive domains to establish a conn
    10  func dialConns(keepAliveUrls []string) error {
    11  	var e error
    12  	for _, u := range keepAliveUrls {
    13  		_, err := auth_v4.Client.Head(u)
    14  		if err != nil {
    15  			e = err
    16  		} else {
    17  			// log.Printf("conn %v",u) // uncomment to see keepalives
    18  		}
    19  	}
    20  	return e
    21  }
    22  
    23  // KeepAlive can make periodic HEAD requests to our AWS endpoint url to keep conns alive.
    24  // Should be run as a goroutine: go KeepAlive(..)
    25  func KeepAlive(keepAliveUrls []string) {
    26  	for {
    27  		select {
    28  		case <-time.After(5 * time.Second):
    29  			dial_err := dialConns(keepAliveUrls)
    30  			if dial_err != nil {
    31  				log.Printf("keepalive.KeepAlive: dial fail:%s", dial_err.Error())
    32  			}
    33  		}
    34  	}
    35  }