问题标签 [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 投票
4 回答
23668 浏览

ruby-on-rails - 如何在生产中部署 resque worker?

GitHub 的家伙最近发布了他们使用 Redis 的后台处理应用程序:http: //github.com/defunkt/resque http://github.com/blog/542-introducing-resque

我让它在本地工作,但我很难让它在生产中工作。有没有人得到:

  1. Capistrano 部署工人的方法(控制工人的数量,重新启动他们等)
  2. 将工作人员部署到与运行主应用程序的机器分开的机器上,这里需要什么设置?
  3. 让 redis 在服务器上重新启动后幸存下来(我尝试将其放入 cron 但没有运气)
  4. 您是如何在部署中使用 resque-web(他们出色的监控应用程序)的?

谢谢!

PS 我在 Github 上发布了一个关于此的问题,但还没有回复。希望一些 SO 大师可以帮助解决这个问题,因为我在部署方面不是很有经验。谢谢!

0 投票
1 回答
2947 浏览

ruby-on-rails - Resque 或 Gearman - 为后台作业选择合适的工具

我们正在开发一个 Web 应用程序,其中大约 50% 的写入请求,我们最终将数据推送到多个数据存储,并在这些数据存储中插入和更新大量记录。为了提高响应时间,我们希望在后台异步处理此类请求。

我们的 Web 应用程序是用 Ruby on Rails 编写的。

我倾向于的两个解决方案是 Resque 和 Gearman。

Resque:这里有更多信息:http: //github.com/blog/542-introducing-resque Resque 似乎非常适合 Ruby,它专门用于后台作业处理。“后台作业可以是响应执行的任何 Ruby 类或模块。您现有的类可以轻松转换为后台作业,或者您可以创建专门用于工作的新类。”

Gearman:它不仅仅适用于异步处理的后台作业,但它绝对可以做到这一点。显然更健壮,或者看起来如此。Gearman 的另一个优点是,虽然您的客户端代码可能在 Ruby 中,但工作代码可能在 PHP 中。虽然现在我们完全是 Ruby on Rails 应用程序,但谁知道将来我们是否可能想要使用 PHP 或其他东西,这取决于手头的工作。

你会推荐什么?你有这两者中的任何一个的经验吗?在两者之间进行选择时,我应该记住哪些现实生活中的生产挑战?我什至在这里比较苹果和苹果吗?

0 投票
1 回答
1376 浏览

ruby-on-rails - 如何同时使用 resque-scheduler 和 resque-status?

我有resque-scheduler在 rails 应用程序中工作正常。现在我需要能够跟踪状态并从队列中删除作业。我简要地看了一下resque-status,从我所看到的来看,如果我能让它与 resque-scheduler 很好地配合,那将是完美的。

然而,救援状态使用createwhich wrapsenqueue和 resque-scheduler 使用enqueue_at我目前使用的扩展。有没有一种简单的方法可以让他们一起玩而无需过多地破解插件?有没有人已经这样做并且愿意给我一些提示?

0 投票
5 回答
7293 浏览

ruby-on-rails - Rails Resque 工作人员因 PGError 失败:服务器意外关闭了连接

我在 Ubuntu 9.10、Rails 2.3.4、ruby-ee 2010.01、PostgreSQL 8.4.2 上以生产模式运行站点运行 rails 应用程序和 resque worker

工人不断提出错误:PGError:服务器意外关闭连接。

我最好的猜测是主 resque 进程建立与 db 的连接(例如,authlogic 在使用 User.acts_as_authentic 时会这样做),同时加载 Rails 应用程序类,并且该连接在 fork()ed 进程中损坏(退出时?),所以下一个分叉孩子们得到一种破碎的全球 ActiveRecord::Base.connection

我可以使用模仿 resque worker 中的 fork/processing 的示例代码重现非常相似的行为。(AFAIK,libpq 的用户无论如何都建议在分叉进程中重新创建连接,否则不安全)

但是,奇怪的是,当我使用 pgbouncer 或 pgpool-II 而不是直接 pgsql 连接时,不会出现这样的错误。

所以,问题是我应该在哪里以及如何挖掘以找出为什么它在普通连接中被破坏并且正在使用连接池?还是合理的解决方法?

0 投票
2 回答
1446 浏览

ruby-on-rails - 从 delay_job 迁移到 resque 的指南?

是否有人拥有或知道如何从延迟作业迁移到 Resque 的指南?我在谷歌上找不到任何东西,我想我一定不是第一个这样做的人。只需列出需要进行的更改和需要注意的事项的一般列表就可以了。

0 投票
1 回答
1361 浏览

ruby - /workers 处的 Resque 运行时错误:“存在”命令的参数数量错误

当我查看 resque-web (localhost) 上的“workers”选项卡时,我遇到了运行时错误。其他一切都有效。

编辑:当这个错误发生时,我也有一些(3 或 4)未知的工人“不工作”。我认为他们应对错误负责,但我不明白他们是如何来到这里的。只有当我从上帝那里开始工人时才会发生

你能帮我解决这个问题吗?我做错什么了吗 ?

配置:Resque 1.8.5 作为 Snow Leopard redis 1.0.7 / rack 1.1 / sinatra 1.0 / vegas 0.1.7 上的 rails 2.3.8 应用程序中的 gem

  • 文件:client.rb
  • 位置:format_error_reply
  • 线路:558

回溯:

0 投票
1 回答
428 浏览

ruby-on-rails - 将resque连接到redis以外的其他键值数据库?

我刚刚在这里阅读了一些关于 resque以及如何将 redis 用作作业的“高级键值存储”的信息。

您可能知道,您可以在多台机器上使用 resque 来处理作业:

工人可以被赋予多个队列(“队列列表”)并在多台机器上运行。事实上,它们可以在任何可以通过网络访问 Redis 服务器的地方运行。

现在我的问题是...... resque 是否能够连接到任何其他键值数据库,例如 SimpleDB 或 CouchDB?如果是的话,这是否有意义?

0 投票
1 回答
821 浏览

ruby-on-rails - Resque:缓慢的工人启动和分叉

我目前正在将我的应用程序从 Linode 设置移动到 EC2。Redis 当前安装在远程实例上,各种工作实例与队列交互。这一切都太棒了。

我的问题是工人被“实例化”和缓慢分叉所需的时间。启动一个工作人员通常需要 30 秒到一分钟(从 god.rb 开始工作人员 rake 任务和工作人员主动开始在队列上工作)。我可以忍受这一点,但我没有在我目前的 Linode 生产箱上经历过这样的等待时间,所以我相信这是我的症状之一,这是一个更大的问题。下一个问题是,在我以前的环境中花费一秒钟或更短时间的工作现在似乎花费了大约 5 到 10 倍的时间。

我假设这一定是我在 EC2 上安装的 Ubuntu 的某种问题?一个显着的区别是我在新设置中运行 REE 1.8.7-2010.01,而在旧 Linode 盒子上运行 REE 1.8.6。

其他人遇到过这些问题吗?

0 投票
4 回答
3729 浏览

ruby-on-rails - 让 Rails 2.3.x 忽略 i18n gem

我有一个使用 Rails 本地化功能的 Rails 2.3.5 项目。我也碰巧安装了 Rails 3 beta(这取决于 i18n gem)。Rails 2.3.5 会很乐意自己处理本地化(没有安装 i18n),但是如果 i18n gem 可用,它会使用它。

最近我升级了我的 gems,现在安装了 i18n 的 0.3.7 和 0.4.0 版本。当然,Rails 想要加载和使用导致我的项目出错的最新版本。我尝试将 gem 版本设置为 0.3.7,以解决 Web 应用程序中的错误。但是,我们使用 resque 和 resque_mailer 来延迟消息的发送。当工作人员从队列中提取邮件作业时,它会忽略我在 environment.rb 中的 config.gem 要求并使用 0.4.0 版本。

理想情况下,我想告诉 Rails 根本不要使用 i18n gem。我怎么做?

更新:从 beta 4 开始,Rails 3 现在需要 i18n 版本 0.4.1。我看不出有多少人没有遇到这个问题,如果你同时安装了 Rails 2 和 Rails 3,你就会遇到这个问题。

0 投票
2 回答
526 浏览

ruby-on-rails - 为什么在使用 resque-status 触发作业时堆栈级别太深?

这是出现在 resque-web 界面上的堆栈跟踪:http: //gist.github.com/396893
在那里你可以检查我正在使用的一些 gem 版本。
现在我做了一些升级来解决这个问题,这里是当前的 gem 版本:

redis (2.0.3)
redis-namespace (0.5.0)
redisk (0.2.1)
resque (1.9.5)
resque-scheduler (1.9.2)
resque-status (0.1.4)

我还写了一个非常简单的工人来丢弃我的任何编程错误,但也没有任何成功。测试工作者代码是(尽管我尝试过使用 resque-status 的任何代码都会出现错误):

(适当的初始化程序正在 Rails 环境初始化中加载)。