Skip to content

Commit

Permalink
[feature] 新增picture到启动项
Browse files Browse the repository at this point in the history
  • Loading branch information
runs committed Jan 16, 2023
1 parent a2c8f2f commit 2cef8ca
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 15 deletions.
22 changes: 21 additions & 1 deletion cmd/spider/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,21 @@ func newSpider() fx.Option {
video_analysis.Provide(),
fx.Provide(spider.NewVideo),
fx.Provide(spider.NewUpdate),
fx.Provide(spider.NewPicture),
fx.Provide(bilibili.NewSDK),
fx.Provide(health.NewCheckServer),
fx.Invoke(lc),
)
}

func lc(lifecycle fx.Lifecycle, spiderVideo *spider.Video, spiderUpdate *spider.Update, checkServer *health.CheckServer, shutdown fx.Shutdowner) {
func lc(
lifecycle fx.Lifecycle,
spiderVideo *spider.Video,
spiderUpdate *spider.Update,
spiderPicture *spider.Picture,
checkServer *health.CheckServer,
shutdown fx.Shutdowner,
) {
lifecycle.Append(fx.Hook{
OnStart: func(ctx context.Context) error {
return spiderVideo.Run(ctx)
Expand All @@ -53,6 +61,18 @@ func lc(lifecycle fx.Lifecycle, spiderVideo *spider.Video, spiderUpdate *spider.
},
})

lifecycle.Append(fx.Hook{
OnStart: func(ctx context.Context) error {
return spiderPicture.Run(ctx)
},
OnStop: func(ctx context.Context) error {
if err := spiderPicture.Stop(ctx); err != nil {
return err
}
return shutdown.Shutdown()
},
})

lifecycle.Append(fx.Hook{
OnStart: func(ctx context.Context) error {
go func() {
Expand Down
28 changes: 14 additions & 14 deletions internal/app/spider/picture.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,47 +32,47 @@ func NewPicture(db *gorm.DB, logger *zap.Logger, sdk *bilibili.SDK) *Picture {
}
}

func (v *Picture) Stop(ctx context.Context) error {
v.logger.Info("stopping spider server")
func (p *Picture) Stop(ctx context.Context) error {
p.logger.Info("stopping spider server")

for {
select {
case <-ctx.Done():
return errors.New("shutdown spider server timeout")
default:
if err := v.stop(); err != nil {
if err := p.stop(); err != nil {
return errors.Wrap(err, "shutdown spider server error")
}
return nil
}
}
}

func (v *Picture) stop() error {
v.stopChan <- true
v.isRunning = false
func (p *Picture) stop() error {
p.stopChan <- true
p.isRunning = false
return nil
}

func (v *Picture) Run(ctx context.Context) error {
func (p *Picture) Run(ctx context.Context) error {
tk := time.NewTicker(60 * time.Minute)
v.isRunning = true
p.isRunning = true

go func() {
if err := v.spider(); err != nil {
v.logger.Error("start spider server error", zap.Error(err))
if err := p.spider(); err != nil {
p.logger.Error("start spider server error", zap.Error(err))
}
}()

go func(_tk *time.Ticker) {
for {
select {
case <-_tk.C:
v.logger.Info("[tick] picture spider", zap.Time("time", time.Now()))
if err := v.spider(); err != nil {
v.logger.Error("start picture server error", zap.Error(err))
p.logger.Info("[tick] picture spider", zap.Time("time", time.Now()))
if err := p.spider(); err != nil {
p.logger.Error("start picture server error", zap.Error(err))
}
case <-v.stopChan:
case <-p.stopChan:
return
}
}
Expand Down

0 comments on commit 2cef8ca

Please sign in to comment.