![]() |
1
2
在发送该电子邮件时,几乎可以肯定全局VM锁仍然适用,这意味着没有区别。 您不应该在请求/响应周期中启动线程。你不应该启动线程,除非你能从一个线程创建到另一个线程加入,即使这样,它也很少值得你为它制造麻烦。 Rails不是线程安全的,也不意味着来自控制器操作。只是因为Rails 2.3已经 刚刚发送 只有在使用config.threadsafe!在environment.rb中将其打开时,才能使用线程安全!。 This article 更详细地解释。如果要异步发送消息,请使用 BackgroundRb 或者它的类似物。 |
![]() |
2
2
通常,使用绿色线程异步运行后台任务意味着您的应用程序可以响应用户 从Rails文档来看,deliver_signup_通知的阻塞时间足以让邮件排队(尽管我可能错了)。因此,在这里使用线程可能会使应用程序看起来更具响应性,这取决于邮件程序的配置方式。 不幸的是,我不清楚deliver_signup_通知是否一定是线程安全的。在依赖它之前,我想仔细阅读文档。 还要注意的是,您正在假设一个请求被服务后Rails进程的生存期。许多Rails应用程序使用DRb(或类似工具)将这些后台任务卸载到一个完全独立的工作进程上。要做到这一点,最简单的方法是经常更改--请参阅谷歌以了解更多信息 a number of popular libraries . |
![]() |
3
2
我使用了您的确切策略,我们的应用程序目前正在生产中运行(但rails 2.2.2除外)。我一直在密切关注它,我们的负载相对较低(平均每天发送的电子邮件不到20封,峰值约为150封/天)。 到目前为止,我们还没有发现任何问题,这似乎解决了我们在使用谷歌邮件服务器时遇到的几个性能问题。 如果你急着需要什么,那就试试看,它一直在为我们工作。 |
![]() |
4
1
据我所知,他们是一样的。 |
![]() |
Animesh Arya · 关联模型的Rspec 2 年前 |
![]() |
Kellen · 查看$卷展栏功能列表 2 年前 |
![]() |
Akshit Thakur Ak · 我怎样才能把铁轨停下来? 2 年前 |
![]() |
solidsnake99 · Rails db:如何绕过验证 2 年前 |
![]() |
Spyros · 从数组中删除nil值,并从引用数组中删除相应的项 2 年前 |
![]() |
Pauli-E · 当div打开并滚动到屏幕上时,向div添加类 2 年前 |
![]() |
ejoka · 如何使用Rails 7模型属性作为CSS标记值 2 年前 |