0

비동기소켓에서 소켓을 binding(?)하는 select() 의 제한수는 일반적으로 리눅스의 기본 제한인 1024개로 제한되어 있습니다.


어느정도 select를 하다보면, 아래와 같은 에러메세지를 만날 수 있습니다. = _=


filedescriptor out of range in select()


이것을 풀기위해, 파이썬을 새로 컴파일 하여 늘릴 수 있습니다.


그 전에, 리눅스 커널의 제한을 모두 풀고 커널 컴파일을 먼저 해주셔야 하지만, 이것이 이미 되어있다면 아래와 같은 방법으로 python 자체적인 제한을 풀 수 있습니다.


파이썬 최신버전을 다운받고 압축을 푼 뒤 파이썬 소스가 압축해제된 폴더로 이동하여 Modules/selectmodule.c 파일을 vi 등의 에디터로 엽니다.


#if defined(MS_WINDOWS) && !defined(FD_SETSIZE)
#define FD_SETSIZE 512
#endif

부분의 적당한 윗부분이나 아래쪽에


#define FD_SETSIZE 10000
#if defined(MS_WINDOWS) && !defined(FD_SETSIZE)
#define FD_SETSIZE 512
#endif

처럼 적당한 값으로 설정하고, 파이썬 설치하기 팁을 참고하여 파이썬을 컴파일 하여 줍니다.