2

私は xmppy を使用しています。xmpp 接続の 50 以上のスレッドを作成します。しばらくすると、エラーが発生します。

File "transports.py", line 199, in pending_data return select.select([self._sock],[],[],timeout)[0] ValueError: filedescriptor out of range in select()

なぜそれが起こるのですか?

PS私の言語で申し訳ありません。

4

1 に答える 1

3

xmpppyは、select()システムコールを使用して、開いている接続を監視します。残念ながら、select()にはかなり厄介な制限があります。ほとんどのシステムでは、ファイル記述子番号が特定の制限(多くの場合1024)までの接続しか監視できません。

これは、より多くのファイルと接続を開くと、最終的には制限に達することを意味します。

解決策は、xmpppyがpoll()またはepollやkqueueなどのより最新の(ただしOS固有の)APIを使用することです。これらはすべて、Pythonの「select」モジュールを介してアクセスできます。

于 2012-04-09T18:16:03.363 に答える