Tag: resque

实际上,bluepill没有检测到进程已成功启动,因此创建了新进程

我有一个(EC2)Ubuntu服务器,其中bluepill正常工作以启动和监视resque进程(并且它在过去的其他节点上已经这样做了)。 我正在设置一个新节点,由于某种原因,在此节点上, bluepill无法识别进程已启动并正在运行,因此不断创建新节点。 造成这种情况的原因令我感到困惑。 2节点几乎相同; 它们都是由相同的chef脚本配置的EC2服务器。 确实,不工作的是“生产”而另一个是“分期”,但由于这一点几乎没有差别。 在我分叉github项目并开始插入更多监控之前的任何想法或建议,试图弄清楚发生了什么? 关于这个列表,有关bluepill和resque的问题一直在讨论,但正如我所说,这在我的登台服务器上工作正常,并且在早期的生产服务器上运行良好(尽管我会注意到这个新的生产服务器是ruby 1.9.3(vs 1.9.2)和rails 3.2(vs. 3.1))。 这是我的.pill文件(或者更具体地说,我的chef食谱的模板文件): ENV[“RAILS_ENV”] = “” ENV[“QUEUE”] = “*” Bluepill.application(“zmx_app”) do |app| app.working_dir = “/srv/zmx/current” app.uid = “root” app.gid = “root” 2.times do |i| app.process(“resque-#{i}”) do |process| process.group = “resque” process.start_command = “rake resque:work” process.pid_file = “/srv/zmx/current/tmp/pids/resque_workers-#{i}.pid” process.stop_command = “kill -QUIT {{PID}}” process.daemonize = […]

Rails resque:将变量从控制器传递给worker时未找到记录

我有一个非常简单的控制器: def create @poem = Poem.new(params[:poem]) @poem.prose = @poem.content @poem.save Resque.enqueue(PoemWork, @poem.id) …. 一个非常简单的工人: class PoemWork @queue = :poem_queue def self.perform(poem_id) @poem = Poem.find(poem_id) txt = @poem.content #do stuff here @poem.save end end 而且我一直得到“找不到id = 53的诗”或smth。 像那样… 我尝试只传递字符串,只是整数等..但它也以ActiveRecord :: RecordNotFound结束 什么可能是错的?

如何开始resque不使用rails

我正在使用ruby(而不是rails),我已经安装了resque gem。 根据手册,我应该使用以下命令启动worker: resque work 但是这个命令根本没有启动工作者(我已经检查了bin中的resque文件,并且它根本不接受’work’)。 这是输出: Usage: resque [options] COMMAND Options: -r, –redis [HOST:PORT] Redis connection string -N, –namespace [NAMESPACE] Redis namespace -h, –help Show this message Commands: remove WORKER Removes a worker kill WORKER Kills a worker list Lists known workers

如何从我的sinatra应用程序中的类传递数据到websocket-rack?

我在sinatra应用程序中有一个websocket-rack的工作配置,用于具有多个屏幕的物理安装。 有一些function可以使消息在websockets中来回传递。 我的问题是这样的:我有一个页面带有标准的Web表单(即不是websocket表单),我的目标是从该表单中收集params,将params转换为字符串变量,然后发送该变量的内容(字符串)通过websocket到不同的页面/屏幕。 对于我的生活,我无法弄清楚如何做一个应该是一个相对简单的任务,因为从我的应用程序中的主类,我无法与我的Socket类进行通信,从我理解的基本上是机架应用。 我试图通过将resque设置为中间人来解决它,但很快发现我的问题没有改变。 我无法弄清楚如何从另一个类调用方法和/或将变量传递给Socket,以便它将推送到浏览器。 基本上,我有一个app.rb是这样的: module SomeThing class App < Sinatra::Base get '/' do #show a form end post '/submit' do #receive params #save params new_message = params.inspect #dream up some way to pass new_message to websocket end post '/otherscreen' do #have an open websocket to receive new_message end end class Socket < […]

Resque:从另一个作业中调用#perform_later不会触发其他作业

我有一个问题,很可能是我做了一些奇怪的事情,但我不能为我的生活弄清楚: 我有一份父母工作,应该开始一堆子工作,但那些子工作永远不会执行。 这是父工作: class TriggerJob < ApplicationJob def perform start_events end around_perform do |_, block| p 'TriggerJob before_perform' block.call p 'TriggerJob after_perform' end private def start_events events = Events.all events.each do |event| event.connectors.each do |connector| p "Stopping connector #{connector.id} for event #{event.id}" StopConnectorJob.perform_later(connector.id) end end end end 这是孩子的工作: class StopConnectorJob < ApplicationJob @queue = :default […]

我应该在rails应用程序中的哪个位置定义resque记录器

我在我的rails应用程序中设置了Resque,它一切正常。 我的问题是记录器设置应该在哪里。 它应该在初始化程序中还是在rake任务中? 它在两者中设置时都有效。 我问的原因是我已经看到它在网上的例子中都使用过。 我认为它应该在初始化器中,因为将setup设置为初始化器是最佳实践。 配置/初始化/ resque.rb logfile = File.open(File.join(Rails.root, ‘log’, ‘resque.log’), ‘a’) logfile.sync = true Resque.logger = ActiveSupport::Logger.new(logfile) Resque.logger.level = Logger::INFO 然后我使用rake任务和作业中的Resque.logger语法写出来。 例如: Resque.logger.info “Resque task started!” 提前谢谢了。 编辑 我会坚持使用初始化程序。

如何在特定队列中推送工作并使用sidekiq限制数字工作者?

我知道我们可以这样做: sidekiq_options queue: “Foo” 但在这种情况下,它只是一个队列中的Worker:“Foo”。 我需要在特定队列中分配一个Job(而不是Worker)。 使用Resque很容易: Resque.enqueue_to(queue_name, my_job) 此外,对于并发问题,我需要将每个队列上的Worker数量限制为1。 我怎样才能做到这一点?

Heroku Cedar – 没有安装Resque前端的静态资产

我有一个简单的Rails应用程序部署到Heroku Cedar堆栈。 该应用程序使用Resque和Resque Sinatra前端应用程序安装,以便我可以监视队列: # routes.rb … mount Resque::Server, :at => “/resque” 这很好用,但是当部署到Heroku时, Resque前端的CSS和JavaScript没有被提供。 一段Heroku的日志表明它返回零字节: … 2011-07-13T16:19:35+00:00 heroku[router]: GET myapp.herokuapp.com/resque/style.css dyno=web.1 queue=0 wait=0ms service=3ms status=200 bytes=0 2011-07-13T16:19:35+00:00 app[web.1]: 2011-07-13T16:19:35+00:00 app[web.1]: 2011-07-13T16:19:35+00:00 app[web.1]: Started GET “/resque/style.css” for 87.xx.xx.xx at 2011-07-13 16:19:35 +0000 2011-07-13T16:19:35+00:00 app[web.1]: cache: [GET /resque/style.css] miss 我怎样才能让它服务这些资产?

如何在启动时自动创建resque worker?

好的,我正在制作我的第一个ruby应用程序。 谁知道把所有东西都搬到’生产’那就太复杂了。 到目前为止,我一直在努力配置乘客,让它在启动时运行,然后在启动时运行redis。 我的最后一项任务是在启动时添加1名工作人员。 现在,我必须ssh并运行我的rake命令rake workers:start 。 显然,当我想关闭ssh时,这并不好。所以我真的不知道下一步是怎么回事。 我尝试将resque默认配置复制到config.ru,它只是炸毁乘客有错误。 我还调查了一些人提到的resque-pool,但这已经超出了我的想象。 我所要做的就是在启动时添加1个工作人员。 在这一点上,这不是一个如此简单的app应该是最好的。

resque故障转移redis的解决方案

由于集群Redis仍然在工作,Resque中是否存在自动故障转移到Redis从站的机制,如果主机出现故障?