Escribí un python script que actualiza los valores de un conjunto de datos y luego devuelve una imagen estática del mapa al que está conectado.
El problema es que si descargo la imagen demasiado pronto después de actualizar el conjunto de datos, una de las capas de visualización del mapa que requiere muchos cálculos no aparecerá.
No quiero tener que establecer un tiempo de espera manual en el código porque el tamaño de los datos que estoy cargando podría oscilar entre 100 y 10.000 puntos de datos.
¿Existe una url de la API a la que pueda llamar para saber cuándo se está actualizando una capa y cuándo ha terminado?
He intentado utilizar la url de visualización pero no he podido encontrar nada en los datos JSON sobre un estado de actualización.
img_url1 = 'https://%s.carto.com/api/v2/viz/%s/viz.json/?api_key=%s&' %(self.options['u'], map_id, self.options['k'])
r1 = requests.get(img_url1)
print(json.dumps(r4.json(), indent=2))
En un hilo similar alguien sugirió usar esto para refrescar los datos de the_geom pero tampoco tuve suerte ahí:
refresh_url = "https://{username}.carto.com/api/v2/sql?q=UPDATE table SET the_geom = cdb_latlng(latitude, longitude)&api_key={api_key}".format(username=self.options['u'], api_key=self.options['k'])
r4 = requests.get(refresh_url)
print(json.dumps(r4.json(), indent=2))
He intentado utilizar la API de mapas con nombre, pero el campo "Última actualización" muestra la hora de inicio de la actualización, no la de finalización, y el campo "Fecha" sólo muestra la hora actual.
img_url2 = 'https://{user}.carto.com/api/v1/map/named/{template}/jsonp?auth_token={auth_token}&callback=callback'.format(user=self.options['u'], template=tpl_name, auth_token=self.options['k'])
r2 = requests.get(img_url2)
print(r2.headers)
'Date': 'Mon, 10 Feb 2020 20:27:14 GMT',
'Content-Type': 'text/javascript; charset=utf-8',
'Transfer-Encoding': 'chunked',
'Connection': 'keep-alive',
'Vary': 'Accept-Encoding, Authorization',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'X-Requested-With, X-Prototype-Version, X-CSRF-Token, Authorization',
'Carto-Rate-Limit-Limit': '21',
'Carto-Rate-Limit-Remaining': '20',
'Carto-Rate-Limit-Reset': '0',
'Cache-Control': 'public,max-age=5,must-revalidate',
'Surrogate-Key': '{removed for privacy}',
'Last-Modified': 'Mon, 10 Feb 2020 20:14:40 GMT',
'X-Layergroup-Id': '{removed for privacy}',
'X-Content-Type-Options': 'nosniff',
'X-Varnish': '47747576',
'Age': '0',
'X-Cache': 'MISS',
'Content-Encoding': 'gzip'