1

config.threadsafe!スレッドモード ( ) を有効にして、JRuby 1.7 の Puma で Rails3 を使用しています 。

理論が進むにつれて、入ってくる複数のクライアントリクエストの場合、毎回新しいレールプロセスが開始されるのではなく、新しいスレッドがユーザーにサービスを提供するために使用されます。

この新しいリクエスト スレッドの ID を見つけたい場合は、どうすればよいですか?

4

2 に答える 2

5

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) オブジェクト自体に基づいてください。

于 2013-09-22T12:23:08.900 に答える