问题标签 [resque]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1409 浏览

java - 部署为 WAR 时 JRuby 中的线程安全 Resque Workers

目前我们在 JRuby 中使用 Resque,我们在开发时使用了两种启动 Worker 的方式。

  • 使用耙:
  • 以编程方式,通过 Sinatra Rack App(或其他)初始化,最终调用一个类:

尽管这两种解决方案在我们的开发中都是可以接受的。例如,我担心这在部署到 Tomcat 时会如何工作。

通常,在 Ruby 中,您会生成或妖魔化工作人员,然后使用监视工具来监视 pid。

在部署时以编程方式启动 Worker 是否有意义?我想知道它是否会在 java 中启动一个新线程或使 jruby 进程混乱,如果我不应该使用另一个调度库(如quartz)来启动一个worker?还是在部署任务时启动的 rake 任务?

我可以创建一个 Worker 模型,然后让它跟踪数据库中的工人,但这对我来说没有意义。

任何帮助或知识将不胜感激。

谢谢你。

参考:

https://github.com/defunkt/resque

http://rubydoc.info/github/defunkt/resque/master/Resque/

http://blog.thomasmango.com/post/636319317/resque-in-production

https://gist.github.com/486161

0 投票
7 回答
33289 浏览

ruby-on-rails-3 - 如何破坏由resque工人排队的工作?

我在 rails-3 项目上使用 Resque 来处理计划每 5 分钟运行一次的作业。我最近做了一些事情,使这些工作的创建滚雪球,堆栈已经达到了 1000 多个工作。我修复了导致许多作业排队的问题,现在我遇到的问题是错误创建的作业仍然存在,因此由于作业被添加到具有 1000 多个作业的队列中,因此很难测试某些内容。我似乎无法停止这些工作。我尝试使用 flushall 命令从 redis-cli 中删除队列,但没有成功。我错过了什么吗?因为我似乎找不到摆脱这些工作的方法。

0 投票
3 回答
1809 浏览

ruby-on-rails - 上帝不会启动 Resque 工人:rake 中止了!非绝对的家

我在 log/resque-0.log 中收到以下错误:

如果我使用上帝使用的相同命令手动启动一个工人,它启动得很好:

我尝试在“rails”用户和“root”用户(God 在其下运行)下运行该命令。有任何想法吗?

0 投票
1 回答
1643 浏览

ruby - 是否可以将参数传递给(resque-status)Resque::JobWithStatus?

我对resque很陌生,但它看起来非常适合我的需求。

实际上,我正在尝试设置一个简单的测试应用程序,例如:

并通过以下方式创建后台工作人员

没有 resque-status,它可以完美地工作(调用 enqueue 而不是创建 worker)。有了resque-status,我得到了一个

参数数量错误(2 为 1)/.../resque_test/lib/word_analyzer.rb:6:in `perform' /.../.rvm/gems/ruby-1.9.2-p136/gems/resque- 1.16.1/lib/resque/job.rb:127:在“执行”中

我搜索了文档和代码,但没有找到将参数传递给 resque-status 工作的正确方法。是否可以?

提前致谢。

0 投票
1 回答
739 浏览

ruby-on-rails - 需要帮助在 Ruby on Rails 上使用 RVM 配置 Redis 支持的库

我正在遵循安装resque的配置指南。我遇到了(LoadError)。我正在使用 RVM 1.9.2-p180、rails 3.0.6 和POW。这可能是我的加载路径完全错误的问题。所以这里有一些额外的信息:

配置/resque.yml

初始化程序/resque.rb:

终端:

Redis-server(当我点击 localhost:6379 时,我正在连接一个额外的客户端。

0 投票
1 回答
3023 浏览

ruby-on-rails - resque-web 无法启动并出现 500 服务器错误

我正在遵循安装resque的配置指南。我遇到了一个(OpenURI::HTTPError)。我正在使用 RVM 1.9.2-p180、rails 3.0.6 和POW .'resque-web' 无法以 500 服务器错误启动。这到底是怎么回事?

复制问题:

  1. 用 $ 启动 redisredis-server
  2. 开始一个工人$ VVERBOSE=1 QUEUE=file_serve rake environment resque:work
  3. 尝试使用以下命令启动 Resque-Web:RAILS_ENV=development resque-web config/initializers/resque.rb

配置/resque.yml

初始化程序/resque.rb:

终端:

Redis-server(当我点击 localhost:6379 时,我正在连接一个额外的客户端。

初始化程序/redis.rb

终端:($redis 的证明)

0 投票
3 回答
5575 浏览

ruby-on-rails - 你如何在 Rails 中每小时调用一个方法?

我正在使用ResqueRedis来处理后台作业。我想每小时调用一次方法 Resque.enqueue(MyModel) 来执行后台任务。

例如:假设我有一个拥有 10,000 个用户的网站。我想每天只调用这个方法 24 次;不是 10,000 * 24。示例方法如下:

提前谢谢你的帮助。我还应该提到我更喜欢坚持使用 Resque,而不是转向延迟工作。谢谢你。

0 投票
1 回答
5486 浏览

ruby-on-rails - Resque.enqueue 在第二次运行时失败

我正在尝试将应用程序从 Rails 3.0.3 移植到 Rails 3.1rc ......我认为我没有错过任何东西,就配置而言。该过程在 Rails 3.0.X 中完美运行,而不是在 3.1rc 中。

在控制台中,我这样做:

到目前为止一切正常。Resque-web 报告没有失败的作业。而且,我从模块 EncodeSong 中得到了两个“放置”。

但是,再次运行Resque.enqueue(EncodeSong, Song.find(20).id, Song.find(20).unencoded_url)将在 resque-web 中返回以下错误(如下)。为了使错误消失,我必须关闭正在运行的进程:QUEUE=* rake environment resque:work并在控制台窗口中重新运行它。但是在第一次尝试 Resque.enqueue() 之后问题又回来了。

这是我的其余相关代码:

/config/initializers/resque.rb

/app/jobs/encode_song.rb

lib/tasks/resque.rake

不太确定,但可能与这个问题有些相关。我的猜测是,主 resque 进程建立与 db 的连接,同时加载 rails 应用程序类、模型等,并且该连接在 fork()ed 进程中损坏(退出时?)。

任何帮助/方向将不胜感激。

编辑:

如果我从lib/tasks/resque.rake中删除以下块:

在控制台中,运行Resque.enqueue(EncodeSong, Song.find(20).id, Song.find(20).unencoded_url)

我收到一个新错误(在运行 QUEUE=* rake environment resque:work 的控制台中):

看来,这可能是适配器的错误?这里可能是错的。你的意见?

0 投票
2 回答
134 浏览

ruby-on-rails - 验证邮件是否应该在后台处理?

是否应该使用某种后台作业(Resque、Delayed_Job 等)在后台处理/发送验证电子邮件?

在发送验证电子邮件之前,该应用程序确实有挂起的趋势。但是,它只挂起一两秒。不知道它是否值得作为后台任务发送。

你觉得呢?你有没有什么想法?

0 投票
1 回答
514 浏览

ruby - Rails 队列管理

我正在构建一项将从远程网站获取并重新验证信息的工作。实际上,我已经用一个类似这样的队列实现了它:读取文本文件,然后将其切成 5k 增量并移交给线程处理器,然后退出并生成一个新的工作线程。

我正在研究 resque,但有一个关于此类问题的通用设计问题。因此,如果我的工作可能包含 5-20M 个工作单元,那么存储队列的最佳实践是什么?例如,理论上我可以将工作分块并存储,然后为该块创建一个作业,或者我可以在队列中有 5-20M 个单独的行项目。在获取/重新生成的工作中似乎有很多开销。但是也有相当大的开销和更多的编码来尝试分块工作。