我正在尝试使用rails 3和resque scheduler来测试将来的调度作业:
以下是我正在使用的代码,但我得到NoMethodError set_schedule.
Resque.set_schedule("1", {
:cron => "30 6 * * 1",
:class => "Notify",
:queue => "username",
:message => 'notification message'
})
Run Code Online (Sandbox Code Playgroud)
我尝试使用一个简单的入队Resque.enqueue(Notify, params[:message]),这很好.
更新:
以下是我得到的错误:
undefined method `set_schedule' for Resque Client connected to redis://bass.redistogo.com:9064/0:Module
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我使用Resque来调整图像大小.如果图像在调整大小队列中,我想显示"调整大小图像"图标.
这意味着我需要能够找到与队列中特定模型ID相关的所有当前作业.现在我这样做:
Resque.peek(:resize, 0, 100).find_all { |job| /#{model.id}/.match(job["args"][0]) }
Run Code Online (Sandbox Code Playgroud)
这是愚蠢的.但有没有办法查询Resque队列以找到第一个参数等于[id]的所有作业?
提前致谢.
我有一个Rails应用程序现在只在内部运行,所以现在没有那么多的访问.并且有两个resque工作器几乎不能从Web获取数据并插入到mysql数据库中,每个插入后都会睡10秒钟.
我们在VPS上运行它.在每5个小时后,我会遇到一个异常Exception occured: [Mysql2::Error] closed MySQL connection".
导致异常的原因是什么?现在游泳池的大小是5.
如果我提高池大小并reconnect: true在我的指定中指定它会有帮助database.yml吗?
我正在使用Capybara-Webkit在网站上自动完成一些工作.这是在Resque任务的后台完成的.经过一些执行后,很多webkit_server进程都很安静,而Capybara没有关闭它们.那么我怎么能强迫Capybara在最后关闭呢?
session = Capybara::Session.new(:webkit)
session.visit URL
session.click_button(BUTTON)
....
Run Code Online (Sandbox Code Playgroud) 我有两个同时排队的工作,一个工人连续运行它们.这两个作业都复制了builds/我的Rails项目根目录中的一些文件,并将它们放入一个临时文件夹中.
第一份工作总是成功,从来没有问题 - 哪个工作先运行也没关系.第一个将工作.
第二个在尝试复制文件时收到此错误:
没有这样的文件或目录 - /Users/apps/Sites/my-site/releases/20130829065128/builds/foo
该版本文件夹已有两周时间了,不应该仍在服务器上.它是空的,只包含一个公共/上传目录,没有别的.我已经杀死了我的所有工作人员并多次重新启动它们,并多次重新部署Rails应用程序.当我删除那个版本目录时,它再次成功.
我不知道该做什么.为什么这个工作者总是在这个旧版本目录中创建/查看?为什么只有第二个工人这样做?我通过使用获得路径:
Rails.root.join('builds') - Rails.root显然是一个2周的capistrano发布?我还应该提到这只发生在生产环境中.我能做什么 ?
我刚刚开始在我的rails应用程序中使用AWS Elastic Beanstalk,我需要将Resque gem用于后台作业.然而,尽管我们都在努力搜索如何在Elastic Beanstalk上运行Resque worker,但我还是无法弄清楚如何?
如何在AWS Elastic Beanstalk上使用Resque运行Rails后台作业?谈到在Elastic Beanstalk容器中将它们作为服务运行,但是,它仍然非常令人困惑.
这里是我的ebextentions resque.config文件:
services:
sysvinit:
resque_worker:
enabled: true
ensureRunning: true
commands:
resque_starter:
rake resque:work QUEUE='*'
Run Code Online (Sandbox Code Playgroud)
编辑 现在我的resque.config文件如下所示:
container_commands:
resque_starter: "rake resque:work QUEUE='*'"
services:
sysvinit:
resque_worker:
enabled: true
ensureRunning: true
commands:
resque_starter
Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作. 编辑2
container_commands:
resque_starter:
command: "rake resque:work QUEUE=sqs_message_sender_queue"
cwd: /var/app/current/
ignoreErrors: true
Run Code Online (Sandbox Code Playgroud)
它仍显示0名工人.
ruby-on-rails amazon-web-services resque amazon-elastic-beanstalk
有没有办法使用Resque插件,如resque- loner,ActiveJob和Resque作为后端?
我无法从resque worker中的包含模块调用方法.在下面的示例中,当我尝试say在worker(在TestLib模块中)中调用方法时,我一直得到未定义的方法错误.我已将代码简化为基础知识来说明问题:
控制器 (/app/controllers/test_controller.rb)
class TestController < ApplicationController
def testque
Resque.enqueue( TestWorker, "HI" )
end
end
Run Code Online (Sandbox Code Playgroud)
库 (/lib/test_lib.rb)
module TestLib
def say( word )
puts word
end
end
Run Code Online (Sandbox Code Playgroud)
工人 (/workers/test_worker.rb)
require 'test_lib'
class TestWorker
include TestLib
@queue = :test_queue
def self.perform( word )
say( word ) #returns: undefined method 'say' for TestWorker:Class
TestLib::say( word ) #returns: undefined method 'say' for TestLib::Module
end
end
Run Code Online (Sandbox Code Playgroud)
Rakefile (resque.rake)
require "resque/tasks"
task "resque:setup" => :environment
Run Code Online (Sandbox Code Playgroud)
我正在使用以下命令运行resque: rake environment resque:work QUEUE='*'
Gems:rails(3.0.4)redis(2.2.2)redis-namespace(1.0.3)resque(1.19.0)
服务器:nginx/1.0.6 …
让我们说我有一个博客应用程序与帖子.创建帖子后,将创建一个工作程序来处理某些后台操作.我的情况是,在提交帖子表单后,我想显示某种加载消息(gif加载器等),当工作人员完成时,我想隐藏加载消息并显示工作人员提供的一些数据.我的问题是,工人完成工作并将其显示在用户前端的最佳沟通方式是什么.工人回调看起来像这样
def worker_finish
#message the user
end
Run Code Online (Sandbox Code Playgroud) 我有一个火种风格的应用程序,允许用户评价事件.在用户对事件进行评级后,将运行后台resque作业,根据用户的反馈对其他事件进行重新排序.
此后台作业大约需要10秒钟,每个用户每分钟运行大约20次.
用一个简单的例子.如果我有10个用户在任何给定时间使用该应用程序,并且我从不希望等待工作,那么最佳方法是什么?
我对Dynos,resque pool和redis连接感到困惑.有人能帮我理解其中的区别吗?有没有办法计算这个?
resque ×10
ruby ×3
capistrano ×1
capybara ×1
heroku ×1
mysql ×1
redis ×1
scheduling ×1
views ×1
worker ×1