Skip to content

Commit 95625f6

Browse files
committed
fsapi version 0.2.0: Added retry logic to the request calls
1 parent 6ebcfb3 commit 95625f6

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

fsapi/__init__.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
For example internet radios from: Medion, Hama, Auna, ...
44
"""
55
import requests
6+
from requests.adapters import HTTPAdapter
7+
from requests.packages.urllib3.util.retry import Retry
68
import logging
79
import traceback
810
from lxml import objectify
@@ -26,11 +28,17 @@ def __init__(self, fsapi_device_url, pin, timeout=DEFAULT_TIMEOUT_IN_SECONDS):
2628
self.fsapi_device_url = fsapi_device_url
2729
self.timeout = timeout
2830

31+
self.session = requests.Session()
32+
retry = Retry(connect=3, backoff_factor=0.5)
33+
adapter = HTTPAdapter(max_retries=retry)
34+
self.session.mount('http://', adapter)
35+
self.session.mount('https://', adapter)
36+
2937
self.webfsapi = self.get_fsapi_endpoint()
3038
self.sid = self.create_session()
3139

3240
def get_fsapi_endpoint(self):
33-
endpoint = requests.get(self.fsapi_device_url, timeout = self.timeout)
41+
endpoint = self.session.get(self.fsapi_device_url, timeout=self.timeout)
3442
doc = objectify.fromstring(endpoint.content)
3543
return doc.webfsapi.text
3644

@@ -54,7 +62,7 @@ def call(self, path, extra=None):
5462

5563
params.update(**extra)
5664

57-
result = requests.get('%s/%s' % (self.webfsapi, path), params=params, timeout = self.timeout)
65+
result = self.session.get('%s/%s' % (self.webfsapi, path), params=params, timeout=self.timeout)
5866
if result.status_code == 404:
5967
return None
6068

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@
2828

2929

3030
setup(name='fsapi',
31-
version='0.1.3',
31+
version='0.2.0',
3232
description='Implementation of the Frontier Silicon API for Python',
3333
author='Krasimir Zhelev',
3434
author_email='krasimir.zhelev@gmail.com',
3535
keywords='fsapi frontier silicon',
3636
license="Apache License 2.0",
37-
download_url='https://github.com/sd-personal/python-fsapi/archive/0.1.3.zip',
37+
download_url='https://github.com/sd-personal/python-fsapi/archive/0.2.0.zip',
3838
url='https://github.com/sd-personal/python-fsapi.git',
3939
maintainer='sd-personal',
4040
zip_safe=True,

0 commit comments

Comments
 (0)