Skip to content

Commit dac21cc

Browse files
committed
feat: support run a cron job now
1 parent 717b4ed commit dac21cc

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

echo.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ func registerJob(apiGroup *echo.Group, jobHandler *jobController.Controller) {
146146
deleteTaskApi.Name = "Delete task route"
147147
listTaskApi := jobApi.GET("/task/list", jobHandler.ListTask)
148148
listTaskApi.Name = "List task route"
149+
runNowApi := jobApi.POST("/run/:job", jobHandler.RunJobByName)
150+
runNowApi.Name = "Run job now route"
149151
}
150152

151153
// /api/v1/archive

internal/controller/job/job.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,18 @@ func (h *Controller) StartJob(c echo.Context) (err error) {
4747
}
4848
}
4949

50+
func (h *Controller) RunJobByName(c echo.Context) (err error) {
51+
logger := common.ExtractLogger(c)
52+
53+
jobName := c.Param("job")
54+
55+
if err := h.cronService.RunJobNow(jobName); err != nil {
56+
logger.Error("Failed to run job now", zap.Error(err))
57+
return c.JSON(http.StatusBadRequest, &ErrResp{Message: err.Error()})
58+
}
59+
return c.JSON(http.StatusOK, &Resp{Message: "job started"})
60+
}
61+
5062
func (h *Controller) GetJobs(c echo.Context) (err error) {
5163
logger := common.ExtractLogger(c)
5264

pkg/cron/cron.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@ func (c *CronService) RemoveCrawlJob(jobID string) (err error) {
6363
return nil
6464
}
6565

66+
func (c *CronService) RunJobNow(jobName string) (err error) {
67+
for _, j := range c.s.Jobs() {
68+
if j.Name() == jobName {
69+
go func() { _ = j.RunNow() }()
70+
return nil
71+
}
72+
}
73+
return fmt.Errorf("job %s not found", jobName)
74+
}
75+
6676
func GenerateRealCrawlFunc(crawlFunc func(chan CronJobInfo)) func() {
6777
return func() {
6878
emptyChan := make(chan CronJobInfo, 1)

0 commit comments

Comments
 (0)