mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-21 17:21:09 +01:00
93 lines
2.4 KiB
Go
93 lines
2.4 KiB
Go
package apps
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/apex/log"
|
|
"github.com/crawlab-team/crawlab/core/color"
|
|
"github.com/crawlab-team/crawlab/core/config"
|
|
"github.com/crawlab-team/crawlab/core/container"
|
|
grpcclient "github.com/crawlab-team/crawlab/core/grpc/client"
|
|
grpcserver "github.com/crawlab-team/crawlab/core/grpc/server"
|
|
modelsclient "github.com/crawlab-team/crawlab/core/models/client"
|
|
modelsservice "github.com/crawlab-team/crawlab/core/models/service"
|
|
nodeconfig "github.com/crawlab-team/crawlab/core/node/config"
|
|
"github.com/crawlab-team/crawlab/core/schedule"
|
|
"github.com/crawlab-team/crawlab/core/spider/admin"
|
|
"github.com/crawlab-team/crawlab/core/stats"
|
|
"github.com/crawlab-team/crawlab/core/task/handler"
|
|
"github.com/crawlab-team/crawlab/core/task/scheduler"
|
|
taskstats "github.com/crawlab-team/crawlab/core/task/stats"
|
|
"github.com/crawlab-team/crawlab/core/user"
|
|
"github.com/crawlab-team/crawlab/core/utils"
|
|
"github.com/crawlab-team/crawlab/trace"
|
|
)
|
|
|
|
func Start(app App) {
|
|
start(app)
|
|
}
|
|
|
|
func start(app App) {
|
|
app.Init()
|
|
go app.Start()
|
|
app.Wait()
|
|
app.Stop()
|
|
}
|
|
|
|
func DefaultWait() {
|
|
utils.DefaultWait()
|
|
}
|
|
|
|
func initModule(name string, fn func() error) (err error) {
|
|
if err := fn(); err != nil {
|
|
log.Error(fmt.Sprintf("init %s error: %s", name, err.Error()))
|
|
_ = trace.TraceError(err)
|
|
panic(err)
|
|
}
|
|
log.Info(fmt.Sprintf("initialized %s successfully", name))
|
|
return nil
|
|
}
|
|
|
|
func initApp(name string, app App) {
|
|
_ = initModule(name, func() error {
|
|
app.Init()
|
|
return nil
|
|
})
|
|
}
|
|
|
|
var injectors = []interface{}{
|
|
modelsservice.GetService,
|
|
modelsclient.NewServiceDelegate,
|
|
modelsclient.NewNodeServiceDelegate,
|
|
modelsclient.NewSpiderServiceDelegate,
|
|
modelsclient.NewTaskServiceDelegate,
|
|
modelsclient.NewTaskStatServiceDelegate,
|
|
modelsclient.NewEnvironmentServiceDelegate,
|
|
grpcclient.NewClient,
|
|
grpcclient.NewPool,
|
|
grpcserver.GetServer,
|
|
grpcserver.NewModelDelegateServer,
|
|
grpcserver.NewModelBaseServiceServer,
|
|
grpcserver.NewNodeServer,
|
|
grpcserver.NewTaskServer,
|
|
grpcserver.NewMessageServer,
|
|
config.NewConfigPathService,
|
|
user.GetUserService,
|
|
schedule.GetScheduleService,
|
|
admin.GetSpiderAdminService,
|
|
stats.GetStatsService,
|
|
nodeconfig.NewNodeConfigService,
|
|
taskstats.GetTaskStatsService,
|
|
color.NewService,
|
|
scheduler.GetTaskSchedulerService,
|
|
handler.GetTaskHandlerService,
|
|
}
|
|
|
|
func injectModules() {
|
|
c := container.GetContainer()
|
|
for _, injector := range injectors {
|
|
if err := c.Provide(injector); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
}
|