需要一个异步web任务的电子邮件调度-许多工厂方法循环


Need an asynchronous web task for email scheduler -- many factory method loops

想知道处理昂贵的web任务的最佳方法是什么?

我有一个电子邮件调度程序,在任何给定的时间发送大量的电子邮件。目前,系统正在获取电子邮件列表,构建它们,并部署它们。然而,随着名单的增长,这开始变得非常昂贵。是否有一种方法可以将其视为生产者-消费者多线程范式?

我在想我可以收集所有的电子邮件,并在web任务的第二部分——通过传递地址和curl构建和部署电子邮件。然而,我相信系统在继续之前必须等待旋度的响应。所以这不是异步的。

最好的方法是什么?现在我有一个cronjob每小时检查一次要发送的电子邮件,这很好,但是电子邮件都是一次构造和发送的,所以它可能很慢,并且可能会重叠到下一个小时的槽——用户有一个指定的时间来检索,所以我希望它能按时发送。

我应该创建一个c++程序来处理这些线程吗?或者我可以用一个更简单的方法…谢谢!

我应该创建一个c++程序来处理这些线程吗?或者我可以用一个更简单的方法…谢谢!

请记住,仅仅通过创建第二个线程,您不会神奇地从您的盒子中获得更多的周期。如果你的邮箱被占用了,你能做的最好的事情就是把你的邮件"线程"调到较低的优先级。它将在后台运行,性能下降。此外,迁移到c++可能会也可能不会真正解决任何问题。瓶颈是代码还是仅仅是某些东西阻止了发送电子邮件?

最终,如果这是一个繁重的,耗时的任务,你可能想要考虑卸载所有的电子邮件处理到一个单独的盒子。您的代码已经将电子邮件放入数据库。建立一个专门的邮箱,检查数据库中的邮件,并在需要的时候发送它们。

我在想我可以收集所有的电子邮件,并在web任务的第二部分——通过传递地址来构建和部署电子邮件

我不确定你在这里是什么意思。但是你知道对服务器来说,转到某个地方是否比发邮件更快吗?会不会慢一点?