Skip to content

Commit e3c0c74

Browse files
committed
Honour project_settings_read_timeout when resolving external layers
1 parent 0eef991 commit e3c0c74

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/config_generator/external_layer_utils.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def getWmsRequestUrl(WMS_Capabilities, reqType, urlObj):
4242
except:
4343
return urllib.parse.urlunparse(urlObj)
4444

45-
def resolve_external_layer(resource, logger, crs=None):
45+
def resolve_external_layer(resource, logger, timeout, crs=None):
4646
cpos = resource.find(':')
4747
hpos = resource.rfind('#')
4848
if hpos == -1:
@@ -63,20 +63,20 @@ def resolve_external_layer(resource, logger, crs=None):
6363
urlobj = urlobj._replace(query=urllib.parse.urlencode(params))
6464
url = urllib.parse.urlunparse(urlobj)
6565

66-
return get_external_wms_layer(resource, url, layername, infoFormat, logger)
66+
return get_external_wms_layer(resource, url, layername, infoFormat, logger, timeout)
6767
elif type == "wmts":
6868
if not crs:
6969
urlobj = urllib.parse.urlparse(url)
7070
params = dict(urllib.parse.parse_qsl(urlobj.query))
7171
crs = params.get('crs', 'EPSG:3857')
72-
return get_external_wmts_layer(resource, url, layername, crs, logger)
72+
return get_external_wmts_layer(resource, url, layername, crs, logger, timeout)
7373
elif type == "mvt":
7474
return get_extermal_mvt_layer(resource, url, layername)
7575
else:
7676
logger.warn("Unknown external layer: %s" % resource)
7777
return None
7878

79-
def get_external_wms_layer(resource, url, layerName, infoFormat, logger):
79+
def get_external_wms_layer(resource, url, layerName, infoFormat, logger, timeout):
8080

8181
global capabilites_cache
8282

@@ -106,7 +106,7 @@ def get_external_wms_layer(resource, url, layerName, infoFormat, logger):
106106

107107
if not capabilites_cache.lookup(capabilitiesUrl):
108108
try:
109-
response = urllib.request.urlopen(capabilitiesUrl)
109+
response = urllib.request.urlopen(capabilitiesUrl, timeout=timeout)
110110
except:
111111
logger.warn("Failed to download capabilities for external layer %s" % resource)
112112
return None
@@ -198,13 +198,13 @@ def get_external_wms_layer(resource, url, layerName, infoFormat, logger):
198198
}
199199

200200

201-
def get_external_wmts_layer(resource, capabilitiesUrl, layerName, crs, logger):
201+
def get_external_wmts_layer(resource, capabilitiesUrl, layerName, crs, logger, timeout):
202202

203203
global capabilites_cache
204204

205205
if not capabilites_cache.lookup(capabilitiesUrl):
206206
try:
207-
response = urllib.request.urlopen(capabilitiesUrl)
207+
response = urllib.request.urlopen(capabilitiesUrl, timeout=timeout)
208208
except:
209209
logger.warn("Failed to download capabilities for external layer %s" % resource)
210210
return None

src/config_generator/map_viewer_config.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ def __init__(self, tenant_path, generator_config, themes_reader,
9393
"generate_thumbnail_timeout", 10
9494
)
9595

96+
self.project_settings_read_timeout = generator_config.get(
97+
"project_settings_read_timeout", 60
98+
)
99+
96100
# keep track of theme IDs for uniqueness
97101
self.theme_ids = []
98102

@@ -280,15 +284,15 @@ def qwc2_themes(self, assets_dir):
280284
self.logger.warn("Skipping unused background layer %s" % entry.get("name", ""))
281285
continue
282286
if "resource" in entry:
283-
layer = resolve_external_layer(entry["resource"], self.logger, bgLayerCrs[entry["name"]])
287+
layer = resolve_external_layer(entry["resource"], self.logger, self.project_settings_read_timeout, bgLayerCrs[entry["name"]])
284288
if layer:
285289
layer["name"] = entry["name"]
286290
entry.update(layer)
287291
del entry["resource"]
288292

289293
# Resolve external layers
290294
for entry in autogenExternalLayers:
291-
layer = resolve_external_layer(entry, self.logger)
295+
layer = resolve_external_layer(entry, self.logger, self.project_settings_read_timeout)
292296
if layer:
293297
themes["externalLayers"].append(layer)
294298

0 commit comments

Comments
 (0)