Email 对于延迟作业、轨道和山楂,这是预期的行为吗?

Email 对于延迟作业、轨道和山楂,这是预期的行为吗?,email,ruby-on-rails-4,smtp,delayed-job,mandrill,Email,Ruby On Rails 4,Smtp,Delayed Job,Mandrill,与之相关,这解释了控制器中逻辑的起源,在将其推送到github并重新部署之前,我有一个关于延迟作业的后台作业的问题 模型和作用域起作用,控制器中的逻辑起作用,电子邮件text.erb文件中的条件起作用,用户是读者或订阅者,可以在“我的帐户”页面上设置他们的电子邮件首选项:[文章和更新,只有文章,没有电子邮件,等等]。延迟作业是在后台设置和处理的,使前端像往常一样友好和快速,mandrillsmtp能够正确地接收并快速发送电子邮件 article_controller中的主逻辑块这样做是为了向正确

与之相关,这解释了控制器中逻辑的起源,在将其推送到github并重新部署之前,我有一个关于延迟作业的后台作业的问题

模型和作用域起作用,控制器中的逻辑起作用,电子邮件text.erb文件中的条件起作用,用户是读者或订阅者,可以在“我的帐户”页面上设置他们的电子邮件首选项:[文章和更新,只有文章,没有电子邮件,等等]。延迟作业是在后台设置和处理的,使前端像往常一样友好和快速,mandrillsmtp能够正确地接收并快速发送电子邮件

article_controller中的主逻辑块这样做是为了向正确的用户发送正确的电子邮件:

if @article.update(article_params) && @article.status == 'published' && @article.created_at.today?
    User.wantsarticles.editor.each do |user|
      ArticleMailer.delay.send_article_full(@article, user)
    end
    User.wantsarticles.subscribers.each do |user|
      ArticleMailer.delay.send_article_full(@article, user)
    end
    User.wantsarticles.readers.each do |user|
      ArticleMailer.delay.send_article_teaser(@article, user)
    end
    format.html { redirect_to :action => 'admin', notice: 'Article was successfully updated.' }
    format.json { render :show, status: :ok, location: @article }
    else
      format.html { redirect_to :action => 'admin', notice: 'Article was successfully updated.' }
      format.json { render :show, status: :ok, location: @article }
    end
但是,通过查看Rails和延迟作业日志,在测试集只有几个用户(5-10)的情况下,当Rails通过逻辑循环并决定需要发送三封电子邮件时,Rails会向DJ表中插入三封,DJ会对每封邮件执行以下操作:

Job NewsitemMailer.send_article_full (id=21) RUNNING
Job NewsitemMailer.send_article_full (id=21) COMPLETED after 0.8950
然后,当它完成时,它会报告:

3 jobs processed at 0.9039 j/s, 0 failed
在Mandrill日志中,发送的每封电子邮件都有自己的API“success/fail”条目


那么:对于延迟的工作,这是正确的/预期的行为吗?是否应该为每封电子邮件创建一个作业?或者以不同的方式处理它们?当我们开始做X千而不是10/3时,这种做法会破坏服务器吗?

这看起来像是延迟作业的默认行为。您有
ArticleMailer.delay
呼叫3次,它将所有任务排队,因此您可以看到处理了
3个作业

我认为,您还应该看看
延迟作业
异步处理
特性

此外,如果你计划处理大量电子邮件,我建议你探索其他选项,如或

在处理大量作业时,它们比延迟的作业要好
delayed_作业
简单且易于设置,但在规模上可能面临性能问题


请参阅以获取概述。

谢谢!是的,这只是一个简单的设置开始,让事情进行,并了解这些事情是如何工作的。我们将看到它对服务器的作用。稍后我们肯定会研究您提到的其他选项。