Sidekiq VS Thread.new在rails 4上发送电子邮件

时间:2013-11-02 09:33:27

标签: ruby-on-rails multithreading email asynchronous sidekiq

我目前正在使用Sidekiq作为在 Rails 4 上异步发送电子邮件的解决方案。 但是现在Rails是Threadsafe by default,这是一个用新线程替换Sidekiq的好方法吗?该解决方案是安全还是不合适?

感谢JD

2 个答案:

答案 0 :(得分:1)

默认情况下,Rails 4是线程安全的 not 意味着你的代码是自动神奇的线程安全的,只是Rails本身(框架)是线程安全的。

因此,我仍然认为坚持Sidekiq是一个好主意,除非你绝对确定你可以编写一个线程安全的实现来自己处理异步电子邮件发送。

答案 1 :(得分:0)

你在这里混淆概念。 " Rails是线程安全的" - 这只意味着rails会锁定代码加载部分,从而减少灾难(竞争条件等)的可能性。您自己的代码不会自动成为线程安全的。

另外,如果您正在接受MRI检查(如果您不知道您使用的是哪种红宝石,那么您还在进行MRI检查) - 您一次只能运行一个线程。因此开始额外线程真的没有任何好处 - 它将与其他线程同步。这些线程不会并行运行(我认为这是你的意图)。目前,在MRI上获得并行执行的唯一方法是多处理(运行多个进程)。这就是Sidekiq所在的地方(双关语意图) - 它是一个额外的流程,可以并行运行

不要使用线程,请使用sidekiq。