在哪里放置循环?在抽成任务上还是在延迟工作上?
Where to put the loop? On the rake task or on 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
这取决于你有多少后台工作者。如果您有多个工作人员,那么第一个选项(单独创建每个作业,在 rake 任务中使用循环)要好得多,因为它允许这些任务 运行 并行。
这也让您更容易编写工作程序方法,因为您无需担心在工作程序碰巧翻倒或被终止时重新运行整个列表。 (尽管确保您的工作人员在可行的情况下是幂等的仍然是一个好习惯!)
我想知道发送一堆电子邮件最有效的方法。
我是否应该将循环放在 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
这取决于你有多少后台工作者。如果您有多个工作人员,那么第一个选项(单独创建每个作业,在 rake 任务中使用循环)要好得多,因为它允许这些任务 运行 并行。
这也让您更容易编写工作程序方法,因为您无需担心在工作程序碰巧翻倒或被终止时重新运行整个列表。 (尽管确保您的工作人员在可行的情况下是幂等的仍然是一个好习惯!)