blob: 05a6ec8a0f26de820d81856d9e98c048362e316c [file] [log] [blame]
package main
import (
"flag"
"fmt"
"os/user"
"go.skia.org/infra/go/common"
"go.skia.org/infra/go/sklog"
"go.skia.org/infra/temporal/go/metrics"
"go.temporal.io/sdk/client"
"go.temporal.io/sdk/worker"
)
const appName = "perf-upload-worker"
var (
hostPort = flag.String("host_port", "localhost:7233", "Host the worker connects to.")
promPort = flag.String("prom_port", ":8000", "Prometheus port that it listens on.")
namespace = flag.String("namespace", "default", "The namespace the worker registered to.")
taskQueue = flag.String("task_queue", "", "Task queue name registered to worker services.")
)
func main() {
flag.Parse()
common.InitWithMust(
appName,
common.PrometheusOpt(promPort),
)
if *taskQueue == "" {
if u, err := user.Current(); err != nil {
sklog.Fatalf("Unable to get the current user: %s", err)
} else {
*taskQueue = fmt.Sprintf("localhost.%s", u.Username)
}
}
// The client and worker are heavyweight objects that should be created once per process.
c, err := client.Dial(client.Options{
MetricsHandler: metrics.NewMetricsHandler(map[string]string{}, nil),
HostPort: *hostPort,
Namespace: *namespace,
})
if err != nil {
sklog.Fatalf("Unable to create client: %s", err)
}
defer c.Close()
w := worker.New(c, *taskQueue, worker.Options{})
err = w.Run(worker.InterruptCh())
if err != nil {
sklog.Fatalf("Unable to start worker: %s", err)
}
}