-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
83 lines (65 loc) · 1.91 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package main
import (
"flag"
"github.com/goprerender/prerender/internal/cachers/rstorage"
"github.com/goprerender/prerender/internal/sitemap"
"github.com/goprerender/prerender/pkg/api/storage"
"github.com/goprerender/prerender/pkg/executor"
prLog "github.com/goprerender/prerender/pkg/log"
"github.com/goprerender/prerender/pkg/renderer"
"github.com/robfig/cron/v3"
"google.golang.org/grpc"
"log"
"os"
"os/signal"
"syscall"
"time"
)
const (
address = "localhost:50051"
)
// Version indicates the current version of the application.
var Version = "1.0.0-beta.0"
var flagDebug = flag.Bool("debug", false, "debug level")
var flagForce = flag.Bool("force", false, "force refresh")
func main() {
// create root logger tagged with server version
logger := prLog.New(*flagDebug).With(nil, "PR Worker", Version)
// Set up a connection to the server.
conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock())
if err != nil {
log.Fatalf("did not connect: %v", err)
}
defer conn.Close()
sc := storage.NewStorageClient(conn)
pc := rstorage.New(sc, logger)
r := renderer.NewRenderer(logger)
defer r.Cancel()
e := executor.NewExecutor(r, pc, logger)
pl := cron.VerbosePrintfLogger(log.New(os.Stdout, "cron: ", log.LstdFlags))
c := cron.New(cron.WithChain(
cron.SkipIfStillRunning(pl)))
startCroneRefresh(e, c, logger)
var sm = func() {
sitemap.BySitemap(e, *flagForce, logger)
c.Start()
}
go sm()
exit := make(chan os.Signal, 1)
signal.Notify(exit, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
<-exit
logger.Info("Service the server received a stop signal...")
time.Sleep(15 * time.Second)
}
func startCroneRefresh(e *executor.Executor, c *cron.Cron, logger prLog.Logger) {
spec := "01 00 * * *"
//spec := "*/1 * * * *"
_, err := c.AddFunc(spec, func() {
logger.Debug(spec)
sitemap.BySitemap(e, true, logger)
})
if err != nil {
panic(err)
}
logger.Info("Crone Refresh init Done")
}