我正在尝试创建一个resque worker,它将一些webscraping作为后台工作。工作人员收到网站主页的URL,进行一些网页搜索,然后将结果存储在Redis中,这意味着要持续五分钟。
下面的代码看起来应该完成我上面描述的内容吗?
class TrialScraper
@queue = :trial_scraper_queue
def self.perform(homepage)
hashed_site_data =
{
:homepage =>
{
:url => homepage,
:title => download_title(homepage),
:meta_tags => download_robots_tags(homepage)
},
:robots_file => download_robots_file(homepage),
}
p hashed_site_data #just to make sure it's working
REDIS.setex(homepage, 60*5, hashed_site_data.to_json)
end
现在,这甚至没有出现Resque的网络界面。
知道我做错了什么吗?我认为问题在于将数据发送到REDIS,但我不确定。
编辑:只是为了澄清,这里有一些更详细的信息。我对上面的工作者的看法是,它在Resque的Web界面中显示为一项工作。
我的代码的最终结果应该只是某些键值对被发送到redis(在Resque之外)。但当我在redis客户端并列出所有密钥时,我看不到任何地方列出的密钥。但我应该看到主页与其他键一起列出。
答案 0 :(得分:1)
我最近编写了一个写入Resque队列&的项目。然后,当处理作业队列时,它会将结果写入同一个Redis存储,因此可以:)
如果您在Resque网络界面中没有看到该作业,那么您很可能不会将该作业入队?
e.g /
ok = Resque.enqueue(TrialScraper, homepage)
希望有帮助吗?