lifetime.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package plugin_manager
  2. import (
  3. "time"
  4. "github.com/langgenius/dify-plugin-daemon/internal/types/entities"
  5. "github.com/langgenius/dify-plugin-daemon/internal/utils/log"
  6. )
  7. func lifetime(r entities.PluginRuntimeInterface) {
  8. start_failed_times := 0
  9. for !r.Stopped() {
  10. if err := r.InitEnvironment(); err != nil {
  11. log.Error("init environment failed: %s, retry in 30s", err.Error())
  12. time.Sleep(30 * time.Second)
  13. if start_failed_times == 3 {
  14. log.Error(
  15. "init environment failed 3 times, plugin %s has been stopped",
  16. r.Configuration().Identity(),
  17. )
  18. r.Stop()
  19. }
  20. start_failed_times++
  21. continue
  22. }
  23. start_failed_times = 0
  24. // start plugin
  25. if err := r.StartPlugin(); err != nil {
  26. log.Error("start plugin failed: %s, retry in 30s", err.Error())
  27. time.Sleep(30 * time.Second)
  28. if start_failed_times == 3 {
  29. log.Error(
  30. "start plugin failed 3 times, plugin %s has been stopped",
  31. r.Configuration().Identity(),
  32. )
  33. r.Stop()
  34. }
  35. start_failed_times++
  36. continue
  37. }
  38. }
  39. }