diff options
| author | Alexandre Flament <alex@al-f.net> | 2019-07-23 13:18:29 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-07-23 13:18:29 +0200 |
| commit | d0dd296424d306049582a5a1b2fa01cbe7d7ce20 (patch) | |
| tree | 04e87d80127e4d6b28bf3cc7a04c60b6e503bb54 /searx/utils.py | |
| parent | 554a21e1d07f3b434b5097b4e3d49e1403be7527 (diff) | |
| parent | da0ce5880fc636acb3356bfa93801a90ec06fa35 (diff) | |
Merge pull request #1642 from dalf/start-speed
Speed up start time and decrease CPU load
Diffstat (limited to 'searx/utils.py')
| -rw-r--r-- | searx/utils.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/searx/utils.py b/searx/utils.py index 6619dd0ae..b7e914557 100644 --- a/searx/utils.py +++ b/searx/utils.py @@ -47,6 +47,8 @@ blocked_tags = ('script', useragents = json.loads(open(os.path.dirname(os.path.realpath(__file__)) + "/data/useragents.json", 'r', encoding='utf-8').read()) +lang_to_lc_cache = dict() + def searx_useragent(): return 'searx/{searx_version} {suffix}'.format( @@ -183,7 +185,7 @@ def get_resources_directory(searx_directory, subdirectory, resources_directory): if not resources_directory: resources_directory = os.path.join(searx_directory, subdirectory) if not os.path.isdir(resources_directory): - raise Exception(directory + " is not a directory") + raise Exception(resources_directory + " is not a directory") return resources_directory @@ -314,6 +316,17 @@ def is_valid_lang(lang): return False +def _get_lang_to_lc_dict(lang_list): + key = str(lang_list) + value = lang_to_lc_cache.get(key, None) + if value is None: + value = dict() + for lc in lang_list: + value.setdefault(lc.split('-')[0], lc) + lang_to_lc_cache[key] = value + return value + + # auxiliary function to match lang_code in lang_list def _match_language(lang_code, lang_list=[], custom_aliases={}): # replace language code with a custom alias if necessary @@ -334,11 +347,7 @@ def _match_language(lang_code, lang_list=[], custom_aliases={}): return new_code # try to get the any supported country for this language - for lc in lang_list: - if lang_code == lc.split('-')[0]: - return lc - - return None + return _get_lang_to_lc_dict(lang_list).get(lang_code, None) # get the language code from lang_list that best matches locale_code |