0

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

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 本身发布消息,但在生产中它会立即发布。调度在生产中不起作用。请帮助我如何使它在生产中工作。

4

2 回答 2

0

所以你正在为每个计划创建一个新的 rufus 调度程序......这是个坏主意,它在浪费资源。一个单一的、共享的、rufus-scheduler 就足够了。

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

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

于 2014-03-18T07:11:03.797 回答
0

通常,当 rufus-scheduler 立即触发时,这意味着“at”是过去的。

尝试使用此代码来查看该假设是否成立:

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 实例是很危险的......

于 2014-03-18T09:34:26.990 回答