1

私は現在、 Rails 4Sidekiqでメールを非同期に送信するソリューションとして使用しています。しかし、Rails が になった今、これは新しい Threadに置き換える良い解決策でしょうか? そのソリューションは安全ですか、それとも不適切ですか?Threadsafe by defaultSidekiq

ありがとうございます

4

2 に答える 2

1

Rails 4 がデフォルトでスレッドセーフであることは、コードが自動的に魔法のようにスレッドセーフであることを意味するのではなく、単に Rails 自体 (フレームワーク) がスレッドセーフであることを意味します。

したがって、非同期メール送信を自分で処理するためのスレッドセーフな実装を作成できることが絶対に確実でない限り、Sidekiq に固執することをお勧めします。

于 2013-11-02T10:04:42.107 に答える
0

ここで概念を混乱させています。「Rails はスレッドセーフです」 - これは、Rails がコード読み込み部分にロックをかけて、障害 (競合状態など) が発生する可能性が少なくなることを意味します。独自のコードが自動的にスレッドセーフになるわけではありません。

また、MRI を使用している場合 (使用しているルビーがわからない場合は、MRI を使用しています)、一度に実行できるスレッドは 1 つだけです。したがって、追加のスレッドを開始するメリットはありません。他のスレッドと同期します。これらのスレッドは並行して実行されません(これはあなたの意図だと思います)。現在、MRI で並列実行を行う唯一の方法は、マルチプロセッシング (複数のプロセスを実行する) です。ここで Sidekiq が機能します (しゃれが意図されています)。これは、ジョブを並行して実行する追加のプロセスです。

スレッドを使用せず、sidekiq を使用してください。

于 2013-11-02T10:18:37.800 に答える