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

ruby-on-rails-3 - Heroku 上的 Resque 无法正常运行

我在后台工作中使用 Resque + RedisToGo。我在 Heroku 上运行后台任务时遇到问题。这很奇怪,因为我第一次运行后台作业时,它会毫无问题地执行。但是当我再次运行它时,它不会执行。我必须每隔一次运行“heroku restart”才能成功完成后台......

例如。如果我的 Resque 后台操作中有以下代码:

在“heroku 控制台”中,我这样做:

在“heroku 日志”中,当我第一次运行上述代码时,我可以看到 4 个“放置”。但是第二次运行它,只返回'foobar'。其他“看跌期权”不显示.....

我怀疑它第二次无法运行“media = Media.find(media_id)”。这只发生在 Heroku 的生产服务器上。在我们的本地开发机器上,我们没有遇到这个问题....有人知道出了什么问题吗?

PS。我尝试启用Heroku logs,但仍然没有得到任何有用的响应。我已按照本教程使用 Resque 设置 Heroku

0 投票
2 回答
1202 浏览

ruby-on-rails-3 - 尝试在 rake 任务中启动 redis 和 resque 调度程序

我想从 rake 任务中启动 redis 和 redis-scheduler,所以我正在执行以下操作:

问题是 redis 在前台启动,然后这永远不会启动调度程序。如果它不会在后台启动(使用 &)。调度程序必须在 redis 启动并运行后启动。

0 投票
1 回答
1093 浏览

ruby-on-rails-3 - resque-scheduler 和重叠的 crons

我只是让 resque-schedule 启动并运行,它适用于一项计划任务。但是,当我在同一个 cron 计划上添加第二个时,它似乎在自己踩踏。这是我的 resque_schedule.yml 的样子:

当我通过 rake resque:scheduler 运行时,我会收到周期性错误:

如果我将时间表更改为只有一个或另一个,他们会玩得很好。如果我将 cron 计划更改为不重叠,它们运行良好。感谢您的任何帮助。OSx 10.6.6,红宝石 1.9.2p136。

请注意,这两个类的 perform 方法现在都只有用于调试的 puts。

0 投票
2 回答
596 浏览

ruby-on-rails - 使用 Resque,如果它们不在您的数据库中,您如何将非 JSON 可序列化的对象传递给作业?

我正在一项工作中创建一个 IMAP 对象,并且需要将其传递给 Resque 中的其他工作。传递 IMAP 对象的最佳方法是什么,因为它不可序列化?

0 投票
3 回答
4530 浏览

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

我正在尝试使用 rails 3 和 resque 调度程序来测试未来的调度作业:

以下是我正在使用的代码,但我得到了 NoMethodError set_schedule。

我尝试使用一个简单的排队Resque.enqueue(Notify, params[:message]),这很好。

更新:

以下是我得到的错误:

0 投票
1 回答
845 浏览

ruby - 在 Rails 3 应用程序中安排任务

我正在编写一个 Rails 3 应用程序,它需要为每个用户按自定义计划执行小任务。计划任务将动态定义。现在我的计划是使用 redis 的 resque 调度程序。

一旦我为指定任务设置了时间表(例如,每 48 小时运行一次任务 A),我想无限期地运行该任务。所以我想将这些计划存储在数据库或其他东西中,以防应用程序在重新启动时崩溃,它会再次加载这些任务。

这是 Resque 默认支持的东西,通过将它存储在 redis 中还是我需要编写自己的自定义东西?我也在看 ruby​​-taskr (http://code.google.com/p/ruby-taskr/)。我不确定taskr是否支持将其存储在数据库中并在启动时注册?

如果有我可以查看的应用程序/演示也会很有帮助。

谢谢

0 投票
2 回答
4539 浏览

ruby - 如何阻止上帝留下陈旧的 Resque 工作进程?

我试图了解如何用上帝来监控 resque 工人的travis-ci,这样通过上帝停止 resque 手表不会留下陈旧的工人进程。

下面我说的是工作进程,而不是分叉的作业子进程(即队列一直是空的)。

当我像这样手动启动 resque worker 时:

我将得到一个进程:

一旦我停止工作任务,这个过程就会消失。

但是当我用上帝开始同样的事情时(确切的配置在这里,与resque/god 示例基本相同)像这样......

然后我会得到一个额外的过程:

上帝似乎只记录了第一个的pid:

然后当我通过上帝停止 resque 手表时:

上帝给出了这个日志输出:

但它实际上并没有终止这两个进程,而是让实际的工作进程保持活动状态:

0 投票
1 回答
2886 浏览

mysql - 在分叉/线程应用程序中运行时,ActiveRecord 无法重新连接?

这里有点开放式问题,所以我将首先概述问题。我们有一个Resque工作人员,他应该从队列中弹出数据同步作业,原因有两个,使用 Cron(并一遍又一遍地支付 Rails 环境启动时间)很糟糕,而替代队列,以及 Github 制作当他们宣布 Resque时,这是对他们不利的一个很好的案例。此外,Redis 时间序列功能已经在我们的基础设施中发挥了重要作用,我们还将 TS 数据混洗到 RRDTool 等...

这就是问题所在,作业之间通常间隔三个小时(但员工可以随时安排作业……因此需要排队),PostgreSQL 服务器就消失了。很容易治愈,我希望reconnect: true在相应的环境下设置可以确保它按预期工作。我在几个 地方读到了一些reconnect: true不适用于使用fork(). 哪一个,Resque自然会做,开始它的工人……我不明白的部分是为什么 ActiveRecord 的重新连接在这些情况下不能工作?

我注意到 ActiveRecord 中 MySQL 适配器和 PostgreSQL 适配器的实现reconnect!不同……但无论哪种方式,我都希望 ActiveRecordreconnect: true配置能够工作。

问题似乎很清楚,当子进程存在时,它会关闭由父进程创建的文件句柄(从而挂起与数据库的连接) - 是否可以以 ActiveRecord 没有的方式关闭文件句柄认识到连接已被终止?

还有,对于它的价值,我可以在 Github 上找到一个ActiveRecord 感知 fork(),作为一个馅饼 - 它未经测试,但我认为它有效(没有在当前的 Rails 上尝试过它..)

我的问题是更多,为什么 AR 中的自动重新连接不能正常工作fork()(而且,最近 - 我不能是唯一遇到这个问题的人;我把它归结为使用 PGSQL 和 Resque!)

0 投票
2 回答
1032 浏览

ruby-on-rails - resque 中的问题:完成处理后作业未从队列中删除

我在我的 rails 应用程序中使用 resque 和 resque-scheduler。我在使用 resque-scheduler 时遇到了奇怪的问题。一旦使用“执行”方法完成,我的一项工作就不会从队列中删除。我需要明确地杀死它以退出队列,然后队列中的其他作业开始执行。

作业类很简单,例如:

resque_schedule.yml 包含:

宝石版本可能有问题吗?或任何其他?

0 投票
1 回答
1045 浏览

redis - 可以使用 Resque 将作业排入不同服务器上的多个 redis 数据库吗?

例如......从同一个rails应用程序我希望能够将电子邮件排队到“localhost:6379”的一个redis db并导入到“10.0.0.5:6379”的另一个redis db。

这似乎设置了 redis 连接应用程序的范围。Resque.redis = "本地主机:6379"

有没有办法通过 Resque 实例化和使用多个 redis 连接?