繁体   English   中英

设置 node-cron 与 Hubot 一起运行

[英]Setting up node-cron to run with Hubot

我正在尝试设置 Hubot 来运行 cronjob,但由于某种原因,使用 node-cron 的 cronjob 没有触发。 我已经通过几种不同的方式阅读和实现了一些东西(一个例子: https : //leanpub.com/automation-and-monitoring-with-hubot/read )但似乎没有任何效果。 目前我使用的代码是

module.exports = (robot) ->
  cronJob = require('cron').CronJob
  tz = 'America/Los_Angeles'
  pattern = '*/1 * * * *'
  cronjob = new cronJob(pattern, everyMinute, null, true, tz)

  console.log "reading cron"
  room = "#testing"
  robot.messageRoom room, 'startup message'

  everyMinute = ->
    robot.messageRoom '#testing', 'I will nag you every minute'
    console.log "every minute should be executed"

我看到了启动消息,但 everyMinute 中的消息没有出现在房间或日志中。 我为模式尝试了不同的格式,但没有任何运气。

奇怪的是 hubot-cron ( https://github.com/miyagawa/hubot-cron ) 工作正常。 我可以设置一个作业并查看来自 cronjob 的输出消息,所以我知道它有效。 如果我查看 hubot-cron 源,我会看到

start: (robot) ->
    @cronjob = new cronJob(@pattern, =>
      @sendMessage robot
    , null, false, @timezone)
    @cronjob.start()

这看起来像我在做什么,但是 hubot-cron 可以工作,而我的代码却没有。 有任何想法吗?

事实证明,node-cron 不喜欢我传递该函数的方式。 看起来将函数传递给 node-cron 的正确方法是

module.exports = (robot) ->
  cronJob = require('cron').CronJob
  tz = 'America/Los_Angeles'
  pattern = '* * * * *'
  new cronJob(pattern, (->
    do everyMinute
  ), null, true, tz)

  everyMinute = ->
    console.log "every minute should be executed"

这对我有用。 请注意,将“do everyMinute”放在单独的行上是必要的,以避免 coffeescript 抱怨尾随逗号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM