我现在有一份永不放弃的工作。它涉及为一堆产品品牌运行数据迁移。
我有一个名为MigrationJob的类。它循环遍历Brands表中的每个记录,并在每个记录上调用“migrate”方法,从而将数据从不同的数据库中移出。
include Migration
class MigrationJob
def perform
while true
for brand in Brand.all
puts "Migrating account #{brand.name}"
brand.migrate
end
end
end
但是请注意,我在delayed_job中进行了整个迁移。这似乎是错的。我是否应该在delayed_job中进行单个品牌的迁移,以便我可以更轻松地跟踪故障?
我真的很想这样做。但是,我应该在哪里放置执行常量迁移的代码?在rake任务中?
答案 0 :(得分:1)
当你说你在delayed_job中进行了整个迁移时。我假设你的意思是你对perform方法说'handle_asynchronously'。如果您希望将每个迁移作为延迟运行:
include Migration
class MigrationJob
def perform
while true
for brand in Brand.all
puts "Migrating account #{brand.name}"
brand.delay.migrate
end
end
end
现在,您可以跟踪哪些作业失败,每次作业需要多长时间等等。