]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Tue, 28 Nov 2023 16:12:38 +0000 (17:12 +0100)
committerRoland Häder <roland@mxchange.org>
Tue, 28 Nov 2023 16:12:38 +0000 (17:12 +0100)
- cached function software.alias()
- moved cached initialization to file header

fba/helpers/domain.py
fba/helpers/software.py

index 9ab00d0a3c431bb84b4285781e8fed372ff99ceb..da553d2cc24ba16ebdabc2d55fefad206258a1c0 100644 (file)
@@ -29,7 +29,16 @@ logging.basicConfig(level=logging.INFO)
 logger = logging.getLogger(__name__)
 
 # In-function cache
-_cache = {}
+_cache = {
+    # Cache for function is_in_url()
+    "is_in_url": {},
+
+    # Cache for function is_wanted()
+    "is_wanted": {},
+
+    # Cache for function raise_on()
+    "raise_on": {},
+}
 
 def raise_on(domain: str):
     logger.debug("domain='%s' - CALLED!", domain)
@@ -38,7 +47,7 @@ def raise_on(domain: str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not of type 'str'")
     elif domain == "":
         raise ValueError("Parameter 'domain' is empty")
-    elif "raise_on" in _cache and domain in _cache["raise_on"]:
+    elif domain in _cache["raise_on"]:
         logger.debug("Returning cached is_found='%s' - EXIT!", _cache["raise_on"][domain])
         return _cache["raise_on"][domain]
     elif domain.lower() != domain:
@@ -53,9 +62,6 @@ def raise_on(domain: str):
         raise ValueError(f"domain='{domain}' is a domain for reversed IP addresses, please don't crawl them!")
     elif domain.endswith(".tld"):
         raise ValueError(f"domain='{domain}' is a fake domain, please don't crawl them!")
-    elif not "raise_on" in _cache:
-        logger.debug("Initializing cache for function 'raise_on' ...")
-        _cache["raise_on"] = {}
 
     _cache["raise_on"][domain] = True
     logger.debug("EXIT!")
@@ -68,12 +74,9 @@ def is_in_url(domain: str, url: str) -> bool:
         raise ValueError(f"Parameter url[]='{type(url)}' is not of type 'str'")
     elif url == "":
         raise ValueError("Parameter 'url' is empty")
-    elif "is_in_url" in _cache and domain + url in _cache["is_in_url"]:
+    elif domain + url in _cache["is_in_url"]:
         logger.debug("Returning cached is_found='%s' - EXIT!", _cache["is_in_url"][domain + url])
         return _cache["is_in_url"][domain + url]
-    elif "is_in_url" not in _cache:
-        logger.debug("Initializing cache for function 'is_in_url' ...")
-        _cache["is_in_url"] = {}
 
     punycode = domain.encode("idna").decode("utf-8")
 
@@ -81,6 +84,8 @@ def is_in_url(domain: str, url: str) -> bool:
     logger.debug("components[]='%s',punycode='%s'", type(components), punycode)
 
     is_found = (punycode in [components.netloc, components.hostname])
+
+    # Set cache
     _cache["is_in_url"][domain + url] = is_found
 
     logger.debug("is_found='%s' - EXIT!", is_found)
@@ -93,12 +98,9 @@ def is_wanted(domain: str) -> bool:
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not of type 'str'")
     elif domain == "":
         raise ValueError("Parameter 'domain' is empty")
-    elif "is_wanted" in _cache and domain in _cache["is_wanted"]:
+    elif domain in _cache["is_wanted"]:
         logger.debug("Returning cached is_found='%s' - EXIT!", _cache["is_wanted"][domain])
         return _cache["is_wanted"][domain]
-    elif "is_wanted" not in _cache:
-        logger.debug("Initializing cache for function 'is_wanted' ...")
-        _cache["is_wanted"] = {}
 
     wanted = True
     if domain.lower() != domain:
@@ -129,6 +131,8 @@ def is_wanted(domain: str) -> bool:
         logger.debug("domain='%s' is a tag", domain)
         wanted = False
 
+    # Set cache
     _cache["is_wanted"][domain] = wanted
+
     logger.debug("wanted='%s' - EXIT!", wanted)
     return wanted
index f224ba4e478da7e9b86d7a3aac54dc58599c7e04..3eca4faf83dd479069b449939b15a3e60f6ac3a7 100644 (file)
@@ -29,6 +29,12 @@ relays = [
     "pub-relay"
 ]
 
+# In-function cache
+_cache = {
+    # Cache for function alias()
+    "alias" : {},
+}
+
 def alias(software: str) -> str:
     logger.debug("software='%s'- CALLED!", software)
 
@@ -36,6 +42,11 @@ def alias(software: str) -> str:
         raise ValueError(f"software[]='{type(software)}' is not type 'str'")
     elif software == "":
         raise ValueError("Parameter 'software' is empty")
+    elif software in _cache["alias"]:
+        logger.debug("Returning cached value='%s' for function 'alias' - EXIT!", _cache["alias"][software])
+        return _cache["alias"][software]
+
+    key = software
 
     logger.debug("software='%s'- BEFORE!", software)
     software = tidyup.domain(software)
@@ -126,6 +137,9 @@ def alias(software: str) -> str:
         logger.debug("software='%s' is being cleaned up further ...")
         software = software.rstrip("!").strip()
 
+    # Set cache
+    _cache["alias"][key] = software
+
     logger.debug("software[%s]='%s' - EXIT!", type(software), software)
     return software