我正在使用rufus调度程序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发布消息,但在生产中它会立即发布。调度在生产中不起作用。请告诉我如何让它在生产中工作。
发布于 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
发布于 2014-03-18 17:34:27
通常,当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实例是很危险的……
https://stackoverflow.com/questions/22471435
复制相似问题