【发布时间】:2017-09-05 02:46:08
【问题描述】:
我有一个数据库,其中包含一些我想以设定的时间间隔(例如:每 60 秒)发布到 Twitter 的推文/文本。推文应该遍历一个 for 循环并在每个时间间隔发布一条推文。
我编写了一个方法,它对一条推文执行此操作,然后休眠 60 秒。
class TweetsController < ApplicationController
def create
Tweet.all.each do |t|
current_user.tweet(t.text)
sleep 60
end
end
end
这基本上可以实现我想要实现的目标,但需要异步且在后台运行。我已经尝试并成功安装了 redis/resque,但未能让工作得以实施和工作。我是 Rails 新手,之前从未设置过后台工作人员/工作。
我在 resque 中实现了一个 Sender.rb 作业
class Sender
def self.queue = :tweets_queue end
def self.perform user_id
Tweet.all.each do |t|
current_user.tweet(t.text)
end
end
end
我已经根据文档实现了resque,并自动自动加载所有工作文件夹。
但我目前遇到了几个问题。像这样,每次我启动工作程序时都会运行 for 循环(我从来没有让它运行)。我需要弄清楚每次工作开始时工作人员如何逐个遍历数据库条目。 另外,我如何安排要执行的作业(例如每 60 秒或每 24 小时运行 Sender.rb 作业等)? 抱歉,这个有点含糊的帖子,但我这几天一直在努力解决这个问题,但一无所获。
【问题讨论】:
标签: ruby-on-rails ruby twitter resque resque-scheduler