7

我按照https://devcenter.heroku.com/articles/queuing-ruby-resque上的教程在 Rails 应用程序中排队和运行后台作业。排队作业后,它似乎没有运行任何作业,因为在控制台中我可以看到作业尚未处理

>Resque.info
=> {:pending=>1, :processed=>0, :queues=>1, :workers=>0, :working=>0, :failed=>0, :servers=>["redis://dory.redistogo.com:9826/0"], :environment=>"production"}

如果我尝试做(本地)

bundle exec rake jobs:work

我明白了

rake aborted!
Don't know how to build task 'jobs:work'

在heroku上,如果我尝试

heroku run rake jobs:work

我再次得到`不知道如何构建任务'

在我的 Rakefile 中有require 'resque/tasks',在我的 Procfile 中有

resque: env TERM_CHILD=1 bundle exec rake jobs:work
resque: env TERM_CHILD=1 bundle exec rake jobs:work

我的 Gemfile 中有 Resque 和 redis gem,但没有延迟作业。

更新: 这是我的 Rakefile:

#!/usr/bin/env rake
require File.expand_path('../config/application', __FILE__)
Guard::Application.load_tasks

/lib/tasks是空的。我在控制器中排队的应用程序/工作人员中有一个工作人员。

4

3 回答 3

6

如果它在本地不起作用,这似乎与 Heroku 没有任何关系。您必须透露一些来源以帮助人们帮助您。例如,你的 Rakefile 是什么样的?那篇文章中的演示应用程序定义了一个带有 Rake 任务的任务。您是否定义了您的 rake 任务并添加了适当的 gem 引用?

于 2013-02-09T14:51:57.470 回答
1

尝试resque:work代替,jobs:work看看这是否是预期的结果。

于 2013-02-09T09:33:32.950 回答
1

您只需要添加require 'resque/tasks'您的Rakefile, 然后在命令行中:

QUEUE=file_serve rake environment resque:work

你的工作名称在哪里file_serve(班级应该是FileServeJob)。

请参阅此处的文档- 我发现它们有点令人困惑,因为设置和运行信息是在作业类创建之后出现的。

于 2016-04-14T23:29:20.927 回答