我正在使用 golang revel,我需要在每个月的第一个星期一运行一个工作,一个石英 cron 规范看起来像这样:0 0 0 ?1/1 星期一#1
但是 robfig/cron 不接受这样的规范,因此也不接受 revel/jobs。任何人都知道我该如何解决[使用狂欢工作]?
要检查该月的第一个星期一,
package main
import (
"fmt"
"time"
)
func IsFirstMonday() bool {
t := time.Now().Local()
if d := t.Day(); 1 <= d && d <= 7 {
if wd := t.Weekday(); wd == time.Monday {
return true
}
}
return false
}
func main() {
fmt.Println(IsFirstMonday())
}
对我来说,最简单的解决方案是这样的:
func (e SomeStruct) Run() {
t := time.Now().Local()
day_num, _ := t.Day()
if day_num <= 7 {
fmt.Println("Hello, playground")
}
}
func init() {
revel.OnAppStart(func() {
jobs.Schedule("0 0 * * 1", SomeStruct{})
})
你只是在每个星期一运行工作,但在工作本身中,在你真正做任何事情之前检查它是否是第一个星期一。可能有更好的方法(对 Revel 不是很熟悉),但是看看他们的工作是如何工作的,这将是可行的,而且这不像是性能问题。