# HG changeset patch
# User Houzefa Abbasbhay <houzefa.abba@xcg-consulting.fr>
# Date 1639499878 -3600
#      Tue Dec 14 17:37:58 2021 +0100
# Branch 13.0
# Node ID 3f6dafff95f02dc6b3661e98db79b028d6bb6198
# Parent  938b441e8c28c55effc28e95a0bb724cbd30e050
Configurable timeout, default is 20 seconds

diff --git a/NEWS.rst b/NEWS.rst
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -2,6 +2,13 @@
 NEWS
 ====
 
+13.0.3.1.0
+==========
+
+(forward port of 11.0.2.5.0)
+
+* Configurable timeout for redner calls, default is 20 seconds.
+
 13.0.3.0.2
 ==========
 
diff --git a/README.rst b/README.rst
--- a/README.rst
+++ b/README.rst
@@ -19,7 +19,9 @@
     redner.server_url = http://dockerhost:7000
     redner.api_key = <your API key here>
     redner.account = <your account name>
+    redner.timeout = 20
 
+``redner.timeout`` is in seconds; defaults to 20 seconds per redner call.
 
 **Pro tip**: You can use mjml-app_ to prototype your email templates.
 
diff --git a/__manifest__.py b/__manifest__.py
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -21,7 +21,7 @@
     "name": "Redner",
     "summary": """
 Allows to generate transactional emails and documents in PDF or HTML format""",
-    "version": "13.0.3.0.2",
+    "version": "13.0.3.1.0",
     "category": "Technical",
     "author": "XCG Consulting",
     "website": "http://odoo.consulting/",
diff --git a/models/redner_template.py b/models/redner_template.py
--- a/models/redner_template.py
+++ b/models/redner_template.py
@@ -89,6 +89,7 @@
                 config_model.get_param("redner.api_key"),
                 config_model.get_param("redner.server_url"),
                 config_model.get_param("redner.account"),
+                int(config_model.get_param("redner.timeout", default="20")),
             )
 
         return self._redner
diff --git a/redner.py b/redner.py
--- a/redner.py
+++ b/redner.py
@@ -15,18 +15,21 @@
 
 
 class Redner(object):
-    def __init__(self, api_key, server_url, account):
+    def __init__(self, api_key, server_url, account, timeout):
         """Initialize the API client
 
         Args:
            api_key(str): provide your Redner API key.
            server_url(str): Redner server URL.
+           timeout(float): Timeout per Redner call, in seconds.
         """
 
-        self.session = requests.session()
+        self.api_key = api_key
+        self.server_url = server_url
         self.account = account
-        self.server_url = server_url
-        self.api_key = api_key
+        self.timeout = timeout
+
+        self.session = requests.sessions.Session()
         self.templates = Templates(self)
 
     def call(self, path, http_verb="post", **params):
@@ -70,7 +73,10 @@
         start = time.time()
 
         r = getattr(self.session, http_verb, "post")(
-            url, json=params, headers={"Rednerd-API-Key": self.api_key}
+            url,
+            json=params,
+            headers={"Rednerd-API-Key": self.api_key},
+            timeout=self.timeout,
         )
 
         complete_time = time.time() - start
@@ -96,7 +102,7 @@
 
     def ping(self):
         """Try to establish a connection to server"""
-        conn = self.session.get(self.server_url)
+        conn = self.session.get(self.server_url, timeout=self.timeout)
         if conn.status_code != requests.codes.ok:
             raise ValidationError("Cannot Establish a connection to server")
         return conn