changeset 1efc9a3e76a5 in modules/stock_package_shipping_sendcloud:default
details: 
https://hg.tryton.org/modules/stock_package_shipping_sendcloud?cmd=changeset&node=1efc9a3e76a5
description:
        Add timeout configuration for requests

        issue10746
        review371891002
diffstat:

 carrier.py            |  12 +++++++-----
 doc/configuration.rst |  10 ++++++++++
 2 files changed, 17 insertions(+), 5 deletions(-)

diffs (74 lines):

diff -r 9c0c6b7e7317 -r 1efc9a3e76a5 carrier.py
--- a/carrier.py        Sat Aug 21 19:38:04 2021 +0200
+++ b/carrier.py        Thu Sep 23 10:06:16 2021 +0200
@@ -20,6 +20,8 @@
 from .exceptions import SendcloudError
 
 SENDCLOUD_API_URL = 'https://panel.sendcloud.sc/api/v2/'
+TIMEOUT = config.getfloat(
+    'stock_package_shipping_sendcloud', 'requests_timeout', default=300)
 
 
 def sendcloud_api(func):
@@ -90,7 +92,7 @@
             return addresses
         response = requests.get(
             SENDCLOUD_API_URL + 'user/addresses/sender',
-            auth=self.auth)
+            auth=self.auth, timeout=TIMEOUT)
         response.raise_for_status()
         addresses = response.json()['sender_addresses']
         self._addresses_sender_cache.set(self.id, addresses)
@@ -124,7 +126,7 @@
             params['is_return'] = is_return
         response = requests.get(
             SENDCLOUD_API_URL + 'shipping_methods', params=params,
-            auth=self.auth)
+            auth=self.auth, timeout=TIMEOUT)
         response.raise_for_status()
         methods = response.json()['shipping_methods']
         self._shiping_methods_cache.set(key, methods)
@@ -149,7 +151,7 @@
     def get_parcel(self, id):
         response = requests.get(
             SENDCLOUD_API_URL + 'parcels/%s' % id,
-            auth=self.auth)
+            auth=self.auth, timeout=TIMEOUT)
         response.raise_for_status()
         return response.json()['parcel']
 
@@ -157,7 +159,7 @@
     def create_parcels(self, parcels):
         response = requests.post(
             SENDCLOUD_API_URL + 'parcels', json={'parcels': parcels},
-            auth=self.auth)
+            auth=self.auth, timeout=TIMEOUT)
         if response.status_code == 400:
             msg = response.json()['error']['message']
             raise requests.HTTPError(msg, response=response)
@@ -166,7 +168,7 @@
 
     @sendcloud_api
     def get_label(self, url):
-        response = requests.get(url, auth=self.auth)
+        response = requests.get(url, auth=self.auth, timeout=TIMEOUT)
         response.raise_for_status()
         return response.content
 
diff -r 9c0c6b7e7317 -r 1efc9a3e76a5 doc/configuration.rst
--- a/doc/configuration.rst     Sat Aug 21 19:38:04 2021 +0200
+++ b/doc/configuration.rst     Thu Sep 23 10:06:16 2021 +0200
@@ -25,3 +25,13 @@
 methods are kept in the cache.
 
 The default value is: ``60 * 60``.
+
+.. _config-stock_package_shipping_sendcloud.requests_timeout:
+
+```requests_timeout```
+======================
+
+The ``requests_timeout`` defines the time in seconds the module is waiting for
+a response from the Sendcloud server.
+
+The default value is: ``300``.

Reply via email to