为什么使用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.timestamps
end
add_index :delayed_jobs, [:p

本文介绍了Rails中使用delayed_job进行异步处理的原因,包括优化delayed jobs表格,实践queueing job。通过调整handler和last_error的数据类型,设置queue索引,以及合理配置job的最大运行时间,提升系统的效率和可跟踪性。同时建议根据业务场景使用多个queue,并利用enqueue、success、fail、error和perform等hook进行定制化操作。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



