我正在研究一种解决方案,以显示延迟作业的完成百分比(使用delayed_job gem).目前,我的delayed_jobs表的数据库迁移类似于以下内容:
class CreateDelayedJobs < ActiveRecord::Migration def self.up create_table :delayed_jobs,:force => true do |table| table.integer :priority,:default => 0 # Allows some jobs to jump to the front of the queue table.integer :attempts,:default => 0 # Provides for retries,but still fail eventually. table.text :handler # YAML-encoded string of the object that will do work table.text :last_error # reason for last failure (See Note below) table.datetime :run_at # When to run. Could be Time.zone.Now for immediately,or sometime in the future. table.datetime :locked_at # Set when a client is working on this object table.datetime :Failed_at # Set when all retries have Failed (actually,by default,the record is deleted instead) table.string :locked_by # Who is working on this object (if locked) table.string :queue # The name of the queue this job is in table.integer :progress table.timestamps end add_index :delayed_jobs,[:priority,:run_at],:name => 'delayed_jobs_priority' end def self.down drop_table :delayed_jobs end end
我在一个控制器方法中使用一个enqueue进程来处理延迟的作业,并在lib / build_detail.rb中引用一个类:
Delayed::Job.enqueue(BuildDetail.new(@object,@com))
lib / build_detail.rb文件如下:
class BuildDetail < Struct.new(:object,:com) def perform total_count = object.person_ids.length progress_count = 0 people = com.person object.person_ids do |abc| progress_count += abc.size Delayed::Job.current.update_attribute :progress,(progress_count/total_count) end end end
延迟:: Job.current不起作用.我在this posting上看到了Delayed :: Job.current方法,但看起来这个方法从未包含在主delayed_jobs github项目中.
如何在每次作业完成循环时访问当前作业(从实际作业中),更新进度字段?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。