瀏覽代碼

feat: gracefully shutdown

Yeuoly 8 月之前
父節點
當前提交
b0d54f505f
共有 1 個文件被更改,包括 15 次插入0 次删除
  1. 15 0
      internal/core/plugin_manager/remote_manager/server.go

+ 15 - 0
internal/core/plugin_manager/remote_manager/server.go

@@ -4,8 +4,11 @@ import (
 	"context"
 	"errors"
 	"fmt"
+	"os"
 	"os/exec"
+	"os/signal"
 	"sync"
+	"syscall"
 	"time"
 
 	"github.com/langgenius/dify-plugin-daemon/internal/core/plugin_manager/media_manager"
@@ -83,9 +86,21 @@ func (r *RemotePluginServer) Launch() error {
 		r.Stop()
 	}
 
+	go r.collectShutdownSignal()
+
 	return err
 }
 
+func (s *RemotePluginServer) collectShutdownSignal() {
+	c := make(chan os.Signal, 1)
+	signal.Notify(c, syscall.SIGTERM, syscall.SIGINT)
+
+	<-c
+
+	// shutdown server
+	s.Stop()
+}
+
 // NewRemotePluginServer creates a new RemotePluginServer
 func NewRemotePluginServer(config *app.Config, media_manager *media_manager.MediaBucket) *RemotePluginServer {
 	addr := fmt.Sprintf(