[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