标签: resque

在resque调度程序中调度动态作业

我正在尝试使用rails 3和resque scheduler来测试将来的调度作业:

以下是我正在使用的代码,但我得到NoM​​ethodError 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)

ruby scheduling scheduled-tasks resque ruby-on-rails-3

9
推荐指数
1
解决办法
4463
查看次数

在resque队列中查找特定作业

在我的应用程序中,我使用Resque来调整图像大小.如果图像在调整大小队列中,我想显示"调整大小图像"图标.

这意味着我需要能够找到与队列中特定模型ID相关的所有当前作业.现在我这样做:

Resque.peek(:resize, 0, 100).find_all { |job| /#{model.id}/.match(job["args"][0]) }
Run Code Online (Sandbox Code Playgroud)

这是愚蠢的.但有没有办法查询Resque队列以找到第一个参数等于[id]的所有作业?

提前致谢.

ruby ruby-on-rails resque redis

9
推荐指数
2
解决办法
1万
查看次数

Ruby - 发生异常:[Mysql2 :: Error]关闭MySQL连接

我有一个Rails应用程序现在只在内部运行,所以现在没有那么多的访问.并且有两个resque工作器几乎不能从Web获取数据并插入到mysql数据库中,每个插入后都会睡10秒钟.

我们在VPS上运行它.在每5个小时后,我会遇到一个异常Exception occured: [Mysql2::Error] closed MySQL connection".

导致异常的原因是什么?现在游泳池的大小是5.

如果我提高池大小并reconnect: true在我的指定中指定它会有帮助database.yml吗?

mysql resque ruby-on-rails-3

9
推荐指数
1
解决办法
7130
查看次数

Capybara-Webkit关闭webkit_server

我正在使用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)

resque capybara ruby-on-rails-3 capybara-webkit

9
推荐指数
1
解决办法
370
查看次数

在Resque作业期间,Rails.root指向生产中的错误目录

我有两个同时排队的工作,一个工人连续运行它们.这两个作业都复制了builds/我的Rails项目根目录中的一些文件,并将它们放入一个临时文件夹中.

第一份工作总是成功,从来没有问题 - 哪个工作先运行也没关系.第一个将工作.

第二个在尝试复制文件时收到此错误:

没有这样的文件或目录 - /Users/apps/Sites/my-site/releases/20130829065128/builds/foo

该版本文件夹已有两周时间了,不应该仍在服务器上.它是空的,只包含一个公共/上传目录,没有别的.我已经杀死了我的所有工作人员并多次重新启动它们,并多次重新部署Rails应用程序.当我删除那个版本目录时,它再次成功.

我不知道该做什么.为什么这个工作者总是在这个旧版本目录中创建/查看?为什么只有第二个工人这样做?我通过使用获得路径:

Rails.root.join('builds') - Rails.root显然是一个2周的capistrano发布?我还应该提到这只发生在生产环境中.我能做什么 ?

capistrano ruby-on-rails resque

9
推荐指数
1
解决办法
1331
查看次数

如何在AWS Elastic Beanstalk上运行Rails后台作业?

我刚刚开始在我的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

9
推荐指数
2
解决办法
3492
查看次数

具有Resque插件的ActiveJob

有没有办法使用Resque插件,如resque- loner,ActiveJob和Resque作为后端?

ruby-on-rails resque rails-activejob

9
推荐指数
1
解决办法
179
查看次数

Rails 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 …

ruby-on-rails worker resque

8
推荐指数
1
解决办法
2726
查看次数

背景工作者在轨道app观看通信

让我们说我有一个博客应用程序与帖子.创建帖子后,将创建一个工作程序来处理某些后台操作.我的情况是,在提交帖子表单后,我想显示某种加载消息(gif加载器等),当工作人员完成时,我想隐藏加载消息并显示工作人员提供的一些数据.我的问题是,工人完成工作并将其显示在用户前端的最佳沟通方式是什么.工人回调看起来像这样

def worker_finish
  #message the user
end
Run Code Online (Sandbox Code Playgroud)

ruby views background-process resque

8
推荐指数
1
解决办法
1447
查看次数

Rails&Heroku:我需要多少工人/动物

我有一个火种风格的应用程序,允许用户评价事件.在用户对事件进行评级后,将运行后台resque作业,根据用户的反馈对其他事件进行重新排序.

此后台作业大约需要10秒钟,每个用户每分钟运行大约20次.

用一个简单的例子.如果我有10个用户在任何给定时间使用该应用程序,并且我从不希望等待工作,那么最佳方法是什么?

我对Dynos,resque pool和redis连接感到困惑.有人能帮我理解其中的区别吗?有没有办法计算这个?

ruby-on-rails heroku resque

8
推荐指数
1
解决办法
1186
查看次数