Skip to content

Commit

Permalink
gestion retry sur un timeout
Browse files Browse the repository at this point in the history
  • Loading branch information
saniho committed Jul 13, 2021
1 parent f6db5a2 commit 22dee2b
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 35 deletions.
6 changes: 6 additions & 0 deletions .scannerwork/report-task.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
projectKey=saniho:apienedi
serverUrl=http://192.168.1.80
serverVersion=9.0.0.45539
dashboardUrl=http://192.168.1.80/dashboard?id=saniho%3Aapienedi
ceTaskId=AXqZl_sKnNg7S8Asgwlf
ceTaskUrl=http://192.168.1.80/api/ce/task?id=AXqZl_sKnNg7S8Asgwlf
2 changes: 1 addition & 1 deletion custom_components/apiEnedis/const.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
""" Constants """

__VERSION__ = "1.3.1.0" # attention updater aussi manifest.json
__VERSION__ = "1.3.1.1" # attention updater aussi manifest.json
__name__ = "myEnedis"

try:
Expand Down
2 changes: 1 addition & 1 deletion custom_components/apiEnedis/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"name": "myEnedis sensor",
"documentation": "https://github.com/saniho/apiEnedis/",
"config_flow": true,
"version": "1.3.1.0",
"version": "1.3.1.1",
"requirements": [
],
"dependencies": [],
Expand Down
78 changes: 45 additions & 33 deletions custom_components/apiEnedis/myCall.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,39 +38,51 @@ def getLastAnswer(self):
return self._lastAnswer

def post_and_get_json(self, url, params=None, data=None, headers=None):
try:
import time
time.sleep( waitCall )
import json, requests
session = requests.Session()
session.verify = True
#print("ici", params, headers, data)
log.info("====== Appel http !!! =====")
response = session.post(url, params=params, data=json.dumps(data), headers=headers, timeout=30)
response.raise_for_status()
dataAnswer = response.json()
self.setLastAnswer(dataAnswer)
log.info("====== Appel http !!! reponse : %s =====" %(dataAnswer))
#raise(requests.exceptions.Timeout) # pour raiser un timeout de test ;)
return dataAnswer
except requests.exceptions.Timeout as error:
response = {"enedis_return": {"error": "UNKERROR_002"}}
self.setLastAnswer(response)
return response
except requests.exceptions.HTTPError as error:
if ( "ADAM-ERR0069" not in response.text ) and \
( "__token_refresh_401" not in response.text ):
log.error("*" * 60)
log.error("header : %s " % (headers))
log.error("params : %s " % (params))
log.error("data : %s " % (json.dumps(data)))
log.error("Error JSON : %s " % (response.text))
log.error("*" * 60)
#with open('error.json', 'w') as outfile:
# json.dump(response.json(), outfile)
dataAnswer = response.json()
self.setLastAnswer(dataAnswer)
return dataAnswer
try_again = True
nbEssai = 0
while( try_again ):
nbEssai += 1
try:
import time
time.sleep( waitCall )
import json, requests
session = requests.Session()
session.verify = True
#print("ici", params, headers, data)
log.info("====== Appel http !!! =====")
response = session.post(url, params=params, data=json.dumps(data), headers=headers, timeout=30)
response.raise_for_status()
dataAnswer = response.json()
self.setLastAnswer(dataAnswer)
log.info("====== Appel http !!! reponse : %s =====" %(dataAnswer))
#raise(requests.exceptions.Timeout) # pour raiser un timeout de test ;)
try_again = False
#return dataAnswer
except requests.exceptions.Timeout as error:
# a ajouter raison de l'erreur !!!
log.info("====== Appel http !!! requests.exceptions.Timeout" )
dataAnswer = {"enedis_return": {"error": "UNKERROR_002"}}
self.setLastAnswer(dataAnswer)
#return dataAnswer
except requests.exceptions.HTTPError as error:
log.info("====== Appel http !!! requests.exceptions.HTTPError" )
if ( "ADAM-ERR0069" not in response.text ) and \
( "__token_refresh_401" not in response.text ):
log.error("*" * 60)
log.error("header : %s " % (headers))
log.error("params : %s " % (params))
log.error("data : %s " % (json.dumps(data)))
log.error("Error JSON : %s " % (response.text))
log.error("*" * 60)
#with open('error.json', 'w') as outfile:
# json.dump(response.json(), outfile)
dataAnswer = response.json()
self.setLastAnswer(dataAnswer)
#return dataAnswer
try_again = False
if ( try_again ) and ( nbEssai > 2):
try_again = False
return dataAnswer

def getDataPeriod(self, deb, fin ):
if (fin is not None):
Expand Down

0 comments on commit 22dee2b

Please sign in to comment.