【问题标题】:Cron Job doesn't trigger with TimeZoneCron Job 不使用 TimeZone 触发
【发布时间】:2019-05-29 06:34:53
【问题描述】:

我一直在对带有时区的 cron 作业进行一些测试。 我的目标是为每个时区设置 1 个 cron 作业,以便它可以独立于服务器位置运行。

package main

import (
    "fmt"
    "github.com/robfig/cron"
    "os"
    "os/signal"
    "time"
)

func helloWorld() {
  fmt.Println("hello world")
}

func main() {
    s, err1 := cron.Parse("26 15 * * *")
    fmt.Println(err1)
    l, err := time.LoadLocation("Asia/Tokyo")
    fmt.Println(err)
    c := cron.NewWithLocation(l)
    c.Schedule(s, cron.FuncJob(helloWorld))
    c.Start()

    sig := make(chan os.Signal)
    signal.Notify(sig, os.Interrupt, os.Kill)
    <-sig
}

在这里,我只是想进行测试。我希望在东京时间 15:26 看到 helloWorld。 (下午 3 点 26 分)

sig sn-p 是我在堆栈溢出时发现的,用于测试目的,这样程序在 cron 作业有时间运行之前不会关闭。

我总是提前 1 或 2 分钟设置时间,但它从来没有工作过。 知道为什么吗?

【问题讨论】:

  • 如果您将其设置为提前 1-2 分钟,则问题很可能是当您更改时区时,您将其调整为过去的时间,或遥远的未来。跨度>
  • 它在我居住的时区,这仍然是个问题吗?我基本上是在比我的电脑时钟测试它,提前 2 分钟。我只是手动输入亚洲/东京时区以进行测试,但我不应该需要它,因为那是我住的地方(所以那是我的电脑时钟)。
  • 不管是你居住的时区。当你将“15:26”调整到任何其他时区时,它不再是“15:26”,所以不会运行你期待。
  • 所以它是调整后的 15:26,而不是定义时区的 15:26?!我应该如何让它在“亚洲/东京”位置的 15:26 运行?我需要在不同的时区安排事情。东京时间 16 点 30 分,伦敦时间上午 10 点,等等......

标签: go cron


【解决方案1】:

我是cron公式的错误"26 15 * * *"应该是"00 26 15 * *"

【讨论】:

    猜你喜欢
    • 2021-09-20
    • 2017-02-27
    • 2019-06-19
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 2021-06-14
    相关资源
    最近更新 更多