config.threadsafe!
スレッドモード ( ) を有効にして、JRuby 1.7 の Puma で Rails3 を使用しています 。
理論が進むにつれて、入ってくる複数のクライアントリクエストの場合、毎回新しいレールプロセスが開始されるのではなく、新しいスレッドがユーザーにサービスを提供するために使用されます。
この新しいリクエスト スレッドの ID を見つけたい場合は、どうすればよいですか?
config.threadsafe!
スレッドモード ( ) を有効にして、JRuby 1.7 の Puma で Rails3 を使用しています 。
理論が進むにつれて、入ってくる複数のクライアントリクエストの場合、毎回新しいレールプロセスが開始されるのではなく、新しいスレッドがユーザーにサービスを提供するために使用されます。
この新しいリクエスト スレッドの ID を見つけたい場合は、どうすればよいですか?
Thread
... 現在実行中の ruby-wayの「一意の」スレッド ID を見つける:
Thread.current.object_id
これはすべてのルビーで機能しますが、実際には「一意」ではない可能性があります...一部のサーバーを参照してください(およびプーマもそうする可能性があります)「ネイティブ」スレッドを再利用する可能性があります(固定スレッドプールを使用するなど)。実際には、次々に実行される 2 つのリクエストで同じになります。
実装の詳細によっては、別のルビー オブジェクトである可能性がありますが (可能性は低いですが)、JRuby の下では同じ Java スレッドになります ... を使用しThread
て「ネイティブ」java.lang.Thread
IDを取得できます。
JRuby.reference(Thread.current).native_thread.id
一般に、リクエストごとに本当にユニークなものが必要な場合はRequest
、アプリケーション/サーバーによって再利用 (リサイクル) されない (Rack/Rails) オブジェクト自体に基づいてください。