worker_reloader.go 945 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package worker_reloader
  2. import (
  3. "context"
  4. "time"
  5. "github.com/vladimirok5959/golang-ip2location/internal/client"
  6. "github.com/vladimirok5959/golang-utils/utils/http/logger"
  7. "github.com/vladimirok5959/golang-worker/worker"
  8. )
  9. var Delay = 60 * time.Minute
  10. func New(cl *client.Client) *worker.Worker {
  11. time.Sleep(1000 * time.Millisecond)
  12. return worker.New(func(ctx context.Context, w *worker.Worker, o *[]worker.Iface) {
  13. if cl, ok := (*o)[0].(*client.Client); ok {
  14. Run(ctx, cl)
  15. }
  16. select {
  17. case <-ctx.Done():
  18. case <-time.After(Delay):
  19. return
  20. }
  21. }, &[]worker.Iface{
  22. cl,
  23. })
  24. }
  25. func Run(ctx context.Context, cl *client.Client) {
  26. logger.LogInfo("worker reloader: trying to reload database\n")
  27. var err error
  28. if err = cl.ReloadDatabase(ctx); err != nil {
  29. logger.LogInternalError(err)
  30. }
  31. if err == nil {
  32. logger.LogInfo("worker reloader: done\n")
  33. } else {
  34. logger.LogInfo("worker reloader: done with error\n")
  35. }
  36. }