【发布时间】:2015-07-14 06:31:24
【问题描述】:
我想从一个表中删除超过 100 万条记录(有时是数百万条记录)。我觉得使用 sidekiq 和 Redis 进行异步操作是安全的,因为我使用的是 Ruby 和 Sinatra。
我应该在什么时候调用 sidekiq 的“执行”方法?我究竟需要在哪里运行我需要删除的记录的循环? 谁能解释一下如何使用sidekiq将要删除的记录放入队列中?
这是我的代码,请检查并告诉我我是否遵循正确的代码。
在我的用户控制器中:
def delete_user
DeleteUserWorker.perform_async(@client_info, @input_params)
end
在我的 lib/workers/deleteuser_worker.rb 中
class DeleteUserWorker
include Sidekiq::Worker
def perform(client_info, input_params)
# executes the query and fetches non-active records from users table.
@delete_users = User.where("status != ? and EndDate < ?", "active", 3.months.ago )
@delete_users.each do |user|
user.destroy!
end
end
end
【问题讨论】:
标签: ruby-on-rails sidekiq