我对ruby中的sidekiq有疑问。 我正在构建一个系统来发送活动电子邮件,10k-50k电子邮件/活动。 现在我正在使用Redis和Sidekiq,为我创建工作人员的每封电子邮件,如下所示:
receivers.each do |receiver|
begin
email_sending_log = EmailSendingLog.create(email:
receiver["email"], sender: sender["email"], content:
content["value"], status: "REQUESTED")
EmailWorker.perform_async(adapter, receiver, sender, content, subject, email_sending_log.id.to_s)
rescue Exception => e
end
end
但它太慢了, 你们有什么想加快我的系统吗? 或者一些加速sidekiq的例子,redis?
答案 0 :(得分:1)
发送广告系列电子邮件是非常标准的任务 - 必须发送N封电子邮件(您的N = 10k..50k)。
初学者选择两种相反的方式:一个具有N-loop OR N后台作业的后台作业,一个发送。
两者都不好:
怎么办?
批次。在M * K = N的情况下,使用带有K循环的M个作业。示例:100个作业,每个作业100个循环。尝试不同的M,K并为您选择最好的一个。它不是一颗银弹,而是一种反其道而行的中庸之道。
电子邮件发送服务。如果您的广告系列是marketing emails(我认为是),最好的方法是使用Sendgrid,SES,Mailchimp,Mailgun,Elasticemail等电子邮件发送服务等等。
它们允许您为每个广告系列创建电子邮件模板(带替换),然后通过一次API调用(地址和替换作为调用的参数)执行整个广告系列发送。它是最快速,最可靠的方式,而且电子邮件发送服务提供了额外的好处。唯一的缺点就是支付了。