# 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