From d9f578d0a9df3cd19c77f1fe30d1b9f8d6fe0498 Mon Sep 17 00:00:00 2001 From: Arti Zirk Date: Wed, 4 Nov 2020 12:18:05 +0200 Subject: [PATCH] Better error handling and logging --- kdoorpi/__init__.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/kdoorpi/__init__.py b/kdoorpi/__init__.py index 8b09303..d8be49c 100644 --- a/kdoorpi/__init__.py +++ b/kdoorpi/__init__.py @@ -15,7 +15,11 @@ except ImportError: from .wiegand import Decoder -logging.basicConfig(level=logging.DEBUG) +logging.basicConfig( + level=logging.DEBUG, + format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', + datefmt='%m-%d %H:%M' +) def hash_uid(uid: str, salt: str) -> str: @@ -52,16 +56,18 @@ class Main: def sync_cards(self): logging.info("Downloading users list") - r = self.session.get(self.api_allowed, timeout=15) try: + r = self.session.get(self.api_allowed, timeout=15) allowed_uids = r.json()["allowed_uids"] except JSONDecodeError as e: logging.exception("Failed to decode allowed uids json") - return - uids = set() - for token in allowed_uids: - uids.add(token["token"]["uid_hash"].strip()) - self.uids = uids + except (requests.Timeout, requests.ConnectionError) as e: + logging.exception("Connection timeout/error in sync cards") + else: + uids = set() + for token in allowed_uids: + uids.add(token["token"]["uid_hash"].strip()) + self.uids = uids def wiegand_callback(self, bits, value): #print("bits", bits, "value", value) @@ -78,10 +84,14 @@ class Main: "uid": value, "uid_hash": uid_h, "door": self.door, - "success": success, - "timestamp": time.strftime("%Y-%m-%d %H:%M:%S") + "timestamp": time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) } - requests.post(self.api_swipe, data=data, timeout=15) + if success: + data["success"] = success + try: + requests.post(self.api_swipe, data=data, timeout=15) + except (requests.Timeout, requests.ConnectionError) as e: + logging.exception("Connection timeout/error in post swipes") def listen_notification(self): while 1: