mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-04 03:27:06 -05:00 
			
		
		
		
	To reduce the memory footprint, this patch no longer loads the JSON data completely into memory. Instead, there is an SQL database based on `ExpireCacheSQLite`. The class CurrenciesDB is a simple DB application that encapsulates the DB (queries and initialization) and provides convenient methods like `name_to_iso4217` and `iso4217_to_name`. Related: - https://github.com/searxng/searxng/discussions/1892 - https://github.com/searxng/searxng/pull/3458#issuecomment-2900807671 - https://github.com/searxng/searxng/pull/4650 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
		
			
				
	
	
		
			30 lines
		
	
	
		
			777 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			777 B
		
	
	
	
		
			Python
		
	
	
	
	
	
# SPDX-License-Identifier: AGPL-3.0-or-later
 | 
						|
# pylint: disable=missing-module-docstring
 | 
						|
from __future__ import annotations
 | 
						|
 | 
						|
import pathlib
 | 
						|
 | 
						|
from searx import logger
 | 
						|
from searx.cache import ExpireCacheCfg, ExpireCacheSQLite
 | 
						|
 | 
						|
log = logger.getChild("data")
 | 
						|
 | 
						|
data_dir = pathlib.Path(__file__).parent
 | 
						|
 | 
						|
_DATA_CACHE: ExpireCacheSQLite = None  # type: ignore
 | 
						|
 | 
						|
 | 
						|
def get_cache():
 | 
						|
 | 
						|
    global _DATA_CACHE  # pylint: disable=global-statement
 | 
						|
 | 
						|
    if _DATA_CACHE is None:
 | 
						|
        _DATA_CACHE = ExpireCacheSQLite.build_cache(
 | 
						|
            ExpireCacheCfg(
 | 
						|
                name="DATA_CACHE",
 | 
						|
                # MAX_VALUE_LEN=1024 * 200,  # max. 200kB length for a *serialized* value.
 | 
						|
                # MAXHOLD_TIME=60 * 60 * 24 * 7 * 4,  # 4 weeks
 | 
						|
            )
 | 
						|
        )
 | 
						|
    return _DATA_CACHE
 |