- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要执行一项工作,其中每次创建订单时都会将其分配给供应商,如果供应商不接受订单并在指定时间内更新状态,订单将被自动拒绝并更新状态拒绝。我面临的问题是作业进入延迟队列,如 resque web View 所示,但在指定的延迟时间后没有移动到主队列
这是我的工作。
class AutoRejectionJob < ActiveJob::Base
queue_as :auto_rejection_queue
def perform(*args)
assignment_id = args[0]
order_assignment = Estamps::Assignment.find(assignment_id)
if order_assignment.status_id == 1 || order_assignment.status_id == nil
order_assignment.status_id = 3
order_assignment.save!
end
end
end
在我的分配模型中:
class Estamps::Assignment < ActiveRecord::Base
after_create :enqueue_check_status
def enqueue_check_status #
AutoRejectionJob.set(wait: 2.minutes).perform_later(self.id)
end
end
在这里,一旦创建了分配记录,其状态通常在创建时保持为“已分配”。现在从创建之时起,如果用户没有在指定时间内更新状态,则作业必须自动将状态更新为“已拒绝”。
我也试过这个方法。
def enqueue_check_status
Resque.enqueue_at_with_queue('auto_rejection_queue', 2.minutes.from_now,
AutoRejectionJob, assignment_id: self.id)
end
他们都将作业发送到resque延迟队列但不将作业带到主队列执行。
此外,当我单击延迟作业的所有计划链接时,作业的时间戳显示没有列出要安排的作业
我被这个问题困扰了将近两周。请帮忙!如果需要更多信息,请告诉我。在这方面遇到了困难。
最佳答案
我已经解决了这个问题。
基本上让工作人员运行本身并不足以处理延迟的工作。您必须运行一个特殊的 rake 任务:
$ PIDFILE=./resque-scheduler.pid BACKGROUND=yes \
rake resque:scheduler
resque:scheduler rake 任务检查计划的作业和延迟的作业(默认情况下每 5 秒一次)并将它们移至您的工作人员处理。您可以在官方 resque-scheduler gem readme 上阅读更多关于如何配置和设置 resque:scheduler rake 任务及其设置的信息。 .
就我而言,我使用的是 capistrano-resque gem通过将行添加到 deploy.rb 文件来部署和管理工作人员(当 capistrano 部署新版本时重新启动他们):
after "deploy:restart", "resque:restart"
虽然这加载了我的工作人员(并按应有的方式重新启动了他们),但您需要添加额外的行(到 deploy.rb):
after 'passenger:restart', 'resque:scheduler:restart'
让 capistrano 为你运行 resque:scheduler 任务。
在我这样做之后,一切都非常完美(并且实际上追溯地加载了应该处理但尚未处理的延迟作业)。
然而,如前所述,如果您确实遇到问题,请确保您的 rake resque:scheduler 任务可以访问环境变量——否则它将无法工作。
关于ruby-on-rails - 在使用 Resque-scheduler 和 redis 时提到的延迟时间过去后,延迟作业未进入主作业队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43692485/
client.on('message', message => { if (message.content === `L!hug`) { if (!message.menti
我往往会忘记我 stash 了一些更改。当存储空间不为空时,我希望看到 git status 输出中提到的存储空间。有没有办法让 git status 这样做? 最佳答案 This is now a
[object Object] 是 JavaScript 对象的默认字符串表示。 如果只是 [Object] 或 [object] 我会理解,但为什么是 [object Object]?为什么第一个单
Jython 可以在这里提供帮助吗?我应该在 Jython 之上运行 Grails,如果是,如何运行?不知何故,我应该能够在同一个 JVM 上运行 Grails 和 Python 脚本。还有其他可能性
http://download.oracle.com/javase/tutorial/collections/interfaces/set.html 为什么Set接口(interface)会列出Col
我正在使用 keras 编写一个 ner 模型,并将模型部署到tensorflow-serving。然后使用http请求来获取预测结果。 这是我的代码: EMBEDDING_OUT_DIM = 128
我是一名优秀的程序员,十分优秀!