私は xmppy を使用しています。xmpp 接続の 50 以上のスレッドを作成します。しばらくすると、エラーが発生します。
File "transports.py", line 199, in pending_datareturn select.select([self._sock],[],[],timeout)[0] ValueError: filedescriptor out of range in select()
なぜそれが起こるのですか?
PS私の言語で申し訳ありません。
xmpppyは、select()システムコールを使用して、開いている接続を監視します。残念ながら、select()にはかなり厄介な制限があります。ほとんどのシステムでは、ファイル記述子番号が特定の制限(多くの場合1024)までの接続しか監視できません。
これは、より多くのファイルと接続を開くと、最終的には制限に達することを意味します。
解決策は、xmpppyがpoll()またはepollやkqueueなどのより最新の(ただしOS固有の)APIを使用することです。これらはすべて、Pythonの「select」モジュールを介してアクセスできます。