首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rufus调度程序在生产环境中未按计划时间发送消息

rufus调度程序在生产环境中未按计划时间发送消息
EN

Stack Overflow用户
提问于 2014-03-18 13:55:55
回答 2查看 145关注 0票数 0

我正在使用rufus调度程序gem来运行后台作业。我正在使用这个gem向twitter和facebook发送消息和图像。下面是我的代码

代码语言:javascript
复制
def schedule_post_to_twitter(twitter_auth, file=nil)
    scheduler = Rufus::Scheduler.new
    scheduler.at self.post_at do
       if file.present?
         self.post_to_twitter(twitter_auth,file)
       else
      self.post_to_twitter(twitter_auth)
     end
  end
end

假设我将消息安排在"2014-03-18 12:23:02“,在开发中它会在12.23发布消息,但在生产中它会立即发布。调度在生产中不起作用。请告诉我如何让它在生产中工作。

EN

回答 2

Stack Overflow用户

发布于 2014-03-18 15:11:04

因此,您正在为每个调度创建一个新的rufus调度程序...这不是个好主意,这是在浪费资源。一个单一的、共享的rufus调度器就足够了。

请阅读https://github.com/jmettraux/rufus-scheduler/#so-rails上的文档,了解如何通过Rails初始化器设置rufus-scheduler实例。这里的示例是从控制器进行调度,您可以根据自己的意愿从模型方法进行调度。

还必须读取:http://www.chiark.greenend.org.uk/~sgtatham/bugs.html

票数 0
EN

Stack Overflow用户

发布于 2014-03-18 17:34:27

通常,当rufus-scheduler立即触发时,这意味着"at“已经过去了。

试着用下面的代码看看这个假设是否成立:

代码语言:javascript
复制
def schedule_post_to_twitter(twitter_auth, file=nil)
  scheduler = Rufus::Scheduler.new # suicidal technique
  scheduler.at self.post_at do
    #if file.present?
    #  self.post_to_twitter(twitter_auth, file)
    #else
    #  self.post_to_twitter(twitter_auth)
    #end
    p [ :post_at, self.post_at ]
    p [ :post_at, Rufus::Scheduler.parse(self.post_at) ]
    p [ :now, Time.now ]
  end
end

请读一读我的另一个答案。为每个调度启动一个新的rufus-scheduler实例是很危险的……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22471435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档