为什么使用delayed_job
当我们获取数据或者处理数据需要很长时间,而使得http请求时间很长时,我们需要使用delayed_job。让我们的数据去异步处理。
rails gem中的delayed_job可以帮助我们实现这个功能,类似的包还有:resque和Sidekiq。但delayed_job与后端数据库结合的更好而被广泛使用。
实践内容
- 优化delayed jobs table
- 实践queueing job
优化delayed jobs表格
- 生成表格
rails generate delayed_job:active_record
则会生成以下migration
def self.up
create_table :delayed_jobs, :force => true do |table|
table.integer :priority, :default => 0, :null => false
table.integer :attempts, :default => 0, :null => false
table.text :handler, :null => false
table.text :last_error
table.datetime :run_at
table.datetime :locked_at
table.datetime :failed_at
table.string :locked_by
table.string :queue
table.ti