在哪里放置循环?在佣金任务或延迟工作?

时间:2017-03-07 15:18:20

标签: ruby-on-rails rake delayed-job

我想知道发送大量电子邮件的效率最高。

  • 我应该将循环放在rake任务上,延迟作业只进行发送吗?

    task :publish => :environment do
      # insert loop here do
        # insert delayed job here
      end
    end
    
  • 我应该把循环放在延迟的工作中吗?

    task :publish => :environment do
      # insert delayed job here
    end
    
    # and on the job:
    def perform
      # insert loop here
    end
    

1 个答案:

答案 0 :(得分:0)

这取决于你有多少背景工人。如果你有多个工作者,那么第一个选项(分别创建每个作业,在rake任务中使用循环)要好得多,因为它允许这些任务并行运行。

它还可以更轻松地编写您的工作方法,因为您不必担心在整个列表中重新运行工作符,如果它碰巧被终止或被终止。 (尽管在实际可行的情况下确保你的工人是幂等的,这仍然是一种很好的做法!)