335 settings_engines: list[dict[str, t.Any]] =
None,
336 settings_outgoing: dict[str, t.Any] =
None,
340 from searx
import settings
344 settings_engines = settings_engines
or settings[
'engines']
345 settings_outgoing = settings_outgoing
or settings[
'outgoing']
349 default_params: dict[str, t.Any] = {
350 'enable_http':
False,
351 'verify': settings_outgoing[
'verify'],
352 'enable_http2': settings_outgoing[
'enable_http2'],
353 'max_connections': settings_outgoing[
'pool_connections'],
354 'max_keepalive_connections': settings_outgoing[
'pool_maxsize'],
355 'keepalive_expiry': settings_outgoing[
'keepalive_expiry'],
356 'local_addresses': settings_outgoing[
'source_ips'],
357 'using_tor_proxy': settings_outgoing[
'using_tor_proxy'],
358 'proxies': settings_outgoing[
'proxies'],
359 'max_redirects': settings_outgoing[
'max_redirects'],
360 'retries': settings_outgoing[
'retries'],
361 'retry_on_http_error':
None,
364 def new_network(params: dict[str, t.Any], logger_name: str |
None =
None):
365 nonlocal default_params
367 result.update(default_params)
368 result.update(params)
370 result[
'logger_name'] = logger_name
374 nonlocal settings_engines
375 for engine_spec
in settings_engines:
376 engine_name = engine_spec[
'name']
377 engine = engines.get(engine_name)
380 network = getattr(engine,
'network',
None)
381 yield engine_name, engine, network
386 NETWORKS[DEFAULT_NAME] = new_network({}, logger_name=
'default')
387 NETWORKS[
'ipv4'] = new_network({
'local_addresses':
'0.0.0.0'}, logger_name=
'ipv4')
388 NETWORKS[
'ipv6'] = new_network({
'local_addresses':
'::'}, logger_name=
'ipv6')
391 for network_name, network
in settings_outgoing[
'networks'].items():
392 NETWORKS[network_name] = new_network(network, logger_name=network_name)
395 for engine_name, engine, network
in iter_networks():
398 for attribute_name, attribute_value
in default_params.items():
399 if hasattr(engine, attribute_name):
400 network[attribute_name] = getattr(engine, attribute_name)
402 network[attribute_name] = attribute_value
403 NETWORKS[engine_name] = new_network(network, logger_name=engine_name)
404 elif isinstance(network, dict):
405 NETWORKS[engine_name] = new_network(network, logger_name=engine_name)
408 for engine_name, engine, network
in iter_networks():
409 if isinstance(network, str):
410 NETWORKS[engine_name] = NETWORKS[network]
415 if 'image_proxy' not in NETWORKS:
416 image_proxy_params = default_params.copy()
417 image_proxy_params[
'enable_http2'] =
False
418 NETWORKS[
'image_proxy'] = new_network(image_proxy_params, logger_name=
'image_proxy')
__init__(self, bool enable_http=True, bool verify=True, bool enable_http2=False, int max_connections=None, int max_keepalive_connections=None, float keepalive_expiry=None, str|dict[str, str]|None proxies=None, bool using_tor_proxy=False, str|list[str]|None local_addresses=None, int retries=0, None retry_on_http_error=None, int max_redirects=30, str logger_name=None)