[Erp5-report] r14986 - /erp5/trunk/products/ERP5OOo/Document/OOoDocument.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Jun 26 18:08:51 CEST 2007


Author: jerome
Date: Tue Jun 26 18:08:51 2007
New Revision: 14986

URL: http://svn.erp5.org?rev=14986&view=rev
Log:
Increase timeout when talking to oood


Modified:
    erp5/trunk/products/ERP5OOo/Document/OOoDocument.py

Modified: erp5/trunk/products/ERP5OOo/Document/OOoDocument.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/Document/OOoDocument.py?rev=14986&r1=14985&r2=14986&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/Document/OOoDocument.py (original)
+++ erp5/trunk/products/ERP5OOo/Document/OOoDocument.py Tue Jun 26 18:08:51 2007
@@ -29,6 +29,8 @@
 from warnings import warn
 from DateTime import DateTime
 from xmlrpclib import Fault
+from xmlrpclib import Transport
+from xmlrpclib import SafeTransport
 from AccessControl import ClassSecurityInfo
 from OFS.Image import Pdata
 from Products.CMFCore.utils import getToolByName, _setCacheHeaders
@@ -47,6 +49,29 @@
 
 _MARKER = []
 STANDARD_IMAGE_FORMAT_LIST = ('png', 'jpg', 'gif', )
+
+
+class TimeoutTransport(SafeTransport):
+  """A xmlrpc transport with configurable timeout.
+  """
+  def __init__(self, timeout=None, scheme='http'):
+    self._timeout = timeout
+    self._scheme = scheme
+
+  def send_content(self, connection, request_body):
+    connection.putheader("Content-Type", "text/xml")
+    connection.putheader("Content-Length", str(len(request_body)))
+    connection.endheaders()
+    if self._timeout:
+      connection._conn.sock.settimeout(self._timeout)
+    if request_body:
+      connection.send(request_body)
+
+  def make_connection(self, h):
+    if self._scheme == 'http':
+      return Transport.make_connection(self, h)
+    return SafeTransport.make_connection(self, h)
+
 
 class OOoDocument(File, ConversionCacheMixin):
   """
@@ -165,8 +190,10 @@
     """
       Create an XML-RPC proxy to access the conversion server.
     """
-    server_proxy = xmlrpclib.ServerProxy('http://%s:%d' % self._getServerCoordinate(),
-                                         allow_none=True)
+    server_proxy = xmlrpclib.ServerProxy(
+             'http://%s:%d' % self._getServerCoordinate(),
+             allow_none=True,
+             transport=TimeoutTransport(timeout=360, scheme='http'))
     return server_proxy
 
   security.declareProtected(Permissions.AccessContentsInformation,




More information about the Erp5-report mailing list