2010-08-20 4 views
0

pylons (paster-based) 웹 서버에서 데이터베이스에 대한 쿼리를 실행하려고하고 있고 pymssql 라이브러리를 가져 오려고 할 때마다 (그 this one은 이 오류가 계속 발생합니다 :웹 서버에서 Python을 통해 Microsoft SQL 사용하기

tds_init_winsock: WSAEnumProtocols failed with 10055(WSAENOBUFS: No buffer space 
available.) 

수입 중. 나는 또한 sqlalchemy를 사용하여 시도하고 정확하게 동일한 오류를 얻을 때 sqlalchemy 엔진을 만들려고. 이 일을하기 위해 내가 할 수있는 일이 있습니까? 나는 다른 어떤 웹 서버 나 pymssql 라이브러리에 연결되어 있지 않기 때문에 다른 어떤 것도 괜찮습니다.

환경 정보 : 내가 사용

기계 위로 가기 서버가 파이썬 VIRTUALENV 환경에서 실행되는 a32bit WIN7 데스크는하지만 pymssql 라이브러리는 서버에 그냥 가상 환경에서 완벽하게 작동

업데이트 :

조금 더 자세한 배경 정보 (및 설명) : 나는 이것이 MSSQL 문제이거나 심지어 파이썬 문제라고 생각하지 않습니다. 이유는 다음과 같습니다. A)이 문제가 발생하는 동안 나와 다른 사람들은 여전히 ​​MSSQL 데이터베이스에 연결할 수 있으며 B) pymssql은 서버에서 가져 오지 않으면 완벽하게 작동합니다. 그러나 그것은 파이썬과 _mssql이 소켓을 처리하는 방식 및/또는 서버가 소켓을 처리하는 방식과 관련이 있다고 생각합니다. 조금 더 도움이되는 희망입니다. 사전에

덕분에 "사용할 수 없음 버퍼 공간"로 번역하면서

답변

1

확인. 나는이 일을 마침내 완전히 얻었습니다. pymssql은 파이썬에서 소켓을 가져온 후에 웹 서버의 소켓을 가져 오기 전에 약간의 문제가있는 것처럼 보입니다. 그래서 pyodbc로 바뀌 었습니다. 이것은 놀랍게도 pymssql 구문과 유사합니다. 확실히 좋은 타협 ...

2

오류 코드 WSAENOBUFS, 실제로 의미 (난 그냥 가리키는 MSDN 페이지를 인용) :

An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.

과 실천에

(로 각 소켓은 간략히은 "사용 중"유지 때문에

in most cases the problem occurs when total count of opened sockets reaches some magical number. MS writes that this limit is 3976 simultaneously opened sockets but it seems that on Win9x systems the real limit is much lower.

: 일반적으로 그냥 지적 기사를) 인용 (의미) here를 예를 들어 설명 잠시 후 (240 초), 데스크톱 시스템이 잘 될 수 있기 때문에 (Windows 7에 상관없이) 적당한 수의 서버에서 쉽게 그 수를 초과한다는 것은 놀랄 일이 아닙니다. 실제 서버 시스템보다 적은 소켓 자원으로 구성됩니다.

이 기사에서는 문제가 해결되었지만 몇 가지 가능성을 지적합니다. 그러나 핵심은 이것이 파이썬, 파이론, 패스터, 또는 Pymssql과 아무 관련이없는 것 같다는 것입니다. 이것은 엄격하게 Windows 시스템 구성과 제어의 문제입니다. 따라서 서버에 익숙한 sysadms가있는 serverfault.com에 문의하는 것이 더 나을 것입니다.

+0

팁 주셔서 감사합니다. 문제는 아니지만, 현재 약 40 개의 연결 만 열리고 있습니다. serverfault에 대해 물어 보겠습니다. – Joshkunz

0

누군가가 http://code.google.com/p/pymssql/issues/detail?id=2에서이 문제를 해결하는 pymssql 설치 프로그램을 게시 한 것 같습니다. 이 설치 프로그램을 실행하기 전에 먼저 pymssql을 제거해야합니다. 그렇지 않으면 손상된 버전에서 가져 오기가 계속 될 수 있습니다.

달걀을 설치했다면 Python 설치 디렉토리 (예 : C : \ Python26)의 lib \ site-packages에서 pymssql * 디렉토리를 삭제하여 제거 할 수 있습니다.

관련 문제