__init__.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. import logging
  3. import importlib
  4. logger = logging.getLogger('searx.shared')
  5. __all__ = ['SharedDict', 'schedule']
  6. try:
  7. uwsgi = importlib.import_module('uwsgi')
  8. except:
  9. # no uwsgi
  10. from .shared_simple import SimpleSharedDict as SharedDict, schedule
  11. logger.info('Use shared_simple implementation')
  12. else:
  13. try:
  14. uwsgi.cache_update('dummy', b'dummy')
  15. if uwsgi.cache_get('dummy') != b'dummy':
  16. raise Exception()
  17. except:
  18. # uwsgi.ini configuration problem: disable all scheduling
  19. logger.error(
  20. 'uwsgi.ini configuration error, add this line to your uwsgi.ini\n'
  21. 'cache2 = name=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1'
  22. )
  23. from .shared_simple import SimpleSharedDict as SharedDict
  24. def schedule(delay, func, *args):
  25. return False
  26. else:
  27. # uwsgi
  28. from .shared_uwsgi import UwsgiCacheSharedDict as SharedDict, schedule
  29. logger.info('Use shared_uwsgi implementation')
  30. storage = SharedDict()