func main() { flags.Parse(os.Args[1:]) // Override config file by the CONFIG env var, if specified. if os.Getenv("CONFIG") != "" { *confFile = os.Getenv("CONFIG") } // Read Config. conf, err := config.New(*confFile) if err != nil { log.Fatal(err) } // Run QMD. app, err := qmd.New(conf) if err != nil { log.Fatal(err) } go app.WatchScripts() go app.StartWorkers() go app.ListenQueue() graceful.AddSignal(syscall.SIGINT, syscall.SIGTERM) graceful.PreHook(app.Close) // Start the API server. log.Printf("Starting QMD API at %s\n", conf.Bind) err = graceful.ListenAndServe(conf.Bind, rest.Routes(app)) if err != nil { log.Fatal(err) } graceful.Wait() }
func main() { var err error flags.Parse(os.Args[1:]) conf, err := server.NewConfigFromFile(*confFile, os.Getenv("CONFIG")) if err != nil { log.Fatal(err) } srv := server.New(conf) graceful.AddSignal(syscall.SIGINT, syscall.SIGTERM) graceful.PreHook(func() { srv.Close() }) if err := srv.Configure(); err != nil { log.Fatal(err) } lg.Infof("** Imgry Server v%s at %s **\n", imgry.VERSION, srv.Config.Server.Addr) lg.Infof("** Engine: %s", imagick.Engine{}.Version()) err = graceful.ListenAndServe(srv.Config.Server.Addr, srv.NewRouter()) if err != nil { lg.Fatal(err.Error()) } graceful.Wait() }
func main() { var err error flags.Parse(os.Args[1:]) conf, err := server.NewConfigFromFile(*confFile, os.Getenv("CONFIG")) if err != nil { log.Fatal(err) } srv := server.New(conf) if err := srv.Configure(); err != nil { log.Fatal(err) } lg.Infof("** Imgry Server v%s at %s **", imgry.VERSION, srv.Config.Bind) lg.Infof("** Engine: %s", srv.ImageEngine.Version()) graceful.AddSignal(syscall.SIGINT, syscall.SIGTERM) graceful.Timeout(30 * time.Second) graceful.PreHook(srv.Close) graceful.PostHook(srv.Shutdown) err = graceful.ListenAndServe(srv.Config.Bind, srv.NewRouter()) if err != nil { lg.Fatal(err.Error()) } graceful.Wait() }
func main() { // sets the maximum number of CPUs that can be executing simultaneously runtime.GOMAXPROCS(runtime.NumCPU()) // override defaults via env vars if os.Getenv("ES_HOST") != "" { esHost = os.Getenv("ES_HOST") } if os.Getenv("ES_PORT") != "" { esPort = os.Getenv("ES_PORT") } if os.Getenv("REDIS_HOST") != "" { redisHost = os.Getenv("REDIS_HOST") } if os.Getenv("REDIS_PORT") != "" { redisPort = os.Getenv("REDIS_PORT") } if os.Getenv("PUBLIC_DIR") != "" { publicDir = os.Getenv("PUBLIC_DIR") } // log endpoints log.Infof("Redis endpoint set to %s:%s", redisHost, redisPort) log.Infof("Elasticsearch endpoint set to %s:%s", esHost, esPort) // register available tiling types tile.Register("heatmap", elastic.NewHeatmapTile(esHost, esPort)) tile.Register("topic_count", elastic.NewTopCountTile(esHost, esPort)) // register available meta data types meta.Register("default", elastic.NewDefaultMeta(esHost, esPort)) // register available store types store.Register("redis", redis.NewConnection(redisHost, redisPort)) // create server app := api.New(publicDir) // catch kill signals for graceful shutdown graceful.AddSignal(syscall.SIGINT, syscall.SIGTERM) // start server log.Infof("Prism server listening on port %s", port) err := graceful.ListenAndServe(":"+port, app) if err != nil { log.Error(err) } // wait until server gracefully exits graceful.Wait() }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) // Parse the flags and store them as a conf struct flag.Parse() conf := skeletor.Conf{ Prod: *prod, Version: version, } skeletor.SaveConf(&conf) // Start the web server graceful.AddSignal(syscall.SIGINT, syscall.SIGTERM) app := api.New() log.Println("Skeletor server listening on", *bind) err := graceful.ListenAndServe(*bind, app) if err != nil { log.Fatal(err) } graceful.Wait() }