[Zope] Out of Buffer space

Etienne Labuschagne elabuschagne at gmsonline.co.za
Fri Oct 31 00:23:10 EST 2003


This is probably not Zope specific, but since I get this in a Zope product 
I am writing, I will post here.

My product uses urllib.urlopen to retrieve images generated by an Internet 
Map server and then displays them on a web page.  Every now and again I get 
an "error" exception (I guess this is socket.error) with the description 
"No buffer space available".  This probably has to do with the fact that 
Windows 2000 Professional only allows a limited amount of connections and 
this happens when you run out of connections (I found this after searching 
around for this type of error).

Unfortunately I do not have the choice to go to a better operating system 
that is not crippled in this way.  The problem seems especially bad when 
running more than one instance of Zope in addition to the Map server.  Is 
there any way of determining from Python how many connections are left?  Or 
would this rather be somewhere in the Windows libraries?

Any suggestions on working around this problem - am I doing something wrong 
with urllib.urlopen that may cause connections to not be released?

Thanks
Etienne

Sample traceback:
Traceback (most recent call last):
   File 
"V:\ZopeInstanceHome27\Products\ZIMSViewerPlugins\PyIMSConnector\TestMap.py", 
line 26, i
n setUp
     self.server = TestServer.getServer()
   File 
"V:\ZopeInstanceHome27\Products\ZIMSViewerPlugins\PyIMSConnector\TestServer.py", 
line 29
, in getServer
     TestServer.environment['ArcIMSProxyPassword'])
   File 
"V:\ZopeInstanceHome27\Products\ZIMSViewerPlugins\PyIMSConnector\Server.py", 
line 37, in
  __init__
     self.reload()
   File 
"V:\ZopeInstanceHome27\Products\ZIMSViewerPlugins\PyIMSConnector\Server.py", 
line 45, in
  reload
     responseString = self.connector.sendRequest(requestString)
   File "c:\!projects\python\PyIMSConnector\ConnectorBase.py", line 45, in 
sendRequest
     raise error
ConnectionError: [Errno Could not connect to the server 
'http://integervpc'] ('socket error', <
socket.error instance at 0x010B6968>)

code that causes the error (the error is caught then re-raised, that's why 
the traceback is not complete):
             f = urllib.urlopen(
                 "%s/servlet/com.esri.esrimap.Esrimap?"\
                 "ServiceName=%s&ClientVersion=4.0%s&Form=True&Encode=False" %(
                 self.serverAddress, mapServiceName, customService), data=data)
             htmlResponse = f.read()
             f.close()

It probably happens at urlopen or f.read()




More information about the Zope mailing list