Max 64 connections/thread under Windows?
no-spam at no-spam.org
Mon Nov 3 23:18:08 CET 2003
Newbie warning on.
I'm having a problem under Windows where I'm getting an error 10055 when
I'm using select() and having 64 sockets open in a single thread. The
description for 10055 is "An operation on a socket could not be
performed because the system lacked sufficient buffer space or because a
queue was full".
I found some more info about this here:
When reading /Python-2.3.2/Modules/selectmodule.c I found the following
/* Windows #defines FD_SETSIZE to 64 if FD_SETSIZE isn't already defined.
64 is too small (too many people have bumped into that limit).
Here we boost it.
Users who want even more than the boosted limit should #define
FD_SETSIZE higher before this; e.g., via compiler /D switch.
#if defined(MS_WINDOWS) && !defined(FD_SETSIZE)
#define FD_SETSIZE 512
which to me looks like Python is trying to increase the value of this
constant, but fails to do so (My only evidence for this is that I'm
getting this error).
To pick up the errno I also need to write something like
except error, (errno, strerror):
when I would expect
errno, strerror = error
to work if I have interpreted the documentation correctly:
...The exception raised when an error occurs. The accompanying value is
a pair containing the numeric error code from errno and the
corresponding string, as would be printed by the C function perror().
Should this trigger a WindowsError exception by the way? (selectmodule.c
calls PyErr_SetExcFromWindowsErr to create the exception.)
More information about the Python-list