mirror of
https://github.com/searxng/searxng.git
synced 2025-06-23 15:30:35 -04: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
|