server.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package server
  2. import (
  3. "github.com/langgenius/dify-plugin-daemon/internal/cluster"
  4. "github.com/langgenius/dify-plugin-daemon/internal/core/persistence"
  5. "github.com/langgenius/dify-plugin-daemon/internal/core/plugin_manager"
  6. "github.com/langgenius/dify-plugin-daemon/internal/db"
  7. "github.com/langgenius/dify-plugin-daemon/internal/oss"
  8. "github.com/langgenius/dify-plugin-daemon/internal/oss/local"
  9. "github.com/langgenius/dify-plugin-daemon/internal/oss/s3"
  10. "github.com/langgenius/dify-plugin-daemon/internal/types/app"
  11. "github.com/langgenius/dify-plugin-daemon/internal/utils/log"
  12. "github.com/langgenius/dify-plugin-daemon/internal/utils/routine"
  13. )
  14. func initOSS(config *app.Config) oss.OSS {
  15. // init oss
  16. var oss oss.OSS
  17. var err error
  18. if config.PluginStorageType == "aws_s3" {
  19. oss, err = s3.NewAWSS3Storage(
  20. config.AWSAccessKey,
  21. config.AWSSecretKey,
  22. config.AWSRegion,
  23. config.PluginStorageOSSBucket,
  24. )
  25. if err != nil {
  26. log.Panic("Failed to create aws s3 storage: %s", err)
  27. }
  28. } else if config.PluginStorageType == "local" {
  29. oss = local.NewLocalStorage(config.PluginStorageLocalRoot)
  30. } else {
  31. log.Panic("Invalid plugin storage type: %s", config.PluginStorageType)
  32. }
  33. return oss
  34. }
  35. func (app *App) Run(config *app.Config) {
  36. // init routine pool
  37. routine.InitPool(config.RoutinePoolSize)
  38. // init db
  39. db.Init(config)
  40. // init oss
  41. oss := initOSS(config)
  42. // create manager
  43. manager := plugin_manager.InitGlobalManager(oss, config)
  44. // create cluster
  45. app.cluster = cluster.NewCluster(config, manager)
  46. // register plugin lifetime event
  47. manager.AddPluginRegisterHandler(app.cluster.RegisterPlugin)
  48. // init manager
  49. manager.Launch(config)
  50. // init persistence
  51. persistence.InitPersistence(oss, config)
  52. // launch cluster
  53. app.cluster.Launch()
  54. // start http server
  55. app.server(config)
  56. // block
  57. select {}
  58. }