@@ -927,29 +927,36 @@ def query():
927927 "{scheme}://{host}:{port}{path}" .format (host = host .name , ** data ),
928928 )
929929 )
930- for future in concurrent .futures .as_completed (futures ):
931- try :
932- result = future .result ()
933- result .raise_for_status ()
934- metrics = list (text_string_to_metric_families (result .text ))
935- yield (
936- result .url ,
937- {
938- "status_code" : result .status_code ,
939- "metric_count" : len (list (metrics )),
940- },
941- )
942- except ValueError as e :
943- yield result .url , f"Unable to parse metrics: { e } "
944- except requests .ConnectionError as e :
945- logger .warning ("Error connecting to server" )
946- yield e .request .url , "Error connecting to server"
947- except requests .RequestException as e :
948- logger .warning ("Error with response" )
949- yield e .request .url , str (e )
950- except Exception :
951- logger .exception ("Unknown Exception" )
952- yield "Unknown URL" , "Unknown error"
930+ try :
931+ for future in concurrent .futures .as_completed (
932+ futures , timeout = settings .PROMGEN_EXPORTER_SCRAPE_TIMEOUT
933+ ):
934+ try :
935+ result = future .result ()
936+ result .raise_for_status ()
937+ metrics = list (text_string_to_metric_families (result .text ))
938+ yield (
939+ result .url ,
940+ {
941+ "status_code" : result .status_code ,
942+ "metric_count" : len (list (metrics )),
943+ },
944+ )
945+ except ValueError as e :
946+ yield result .url , f"Unable to parse metrics: { e } "
947+ except requests .ConnectionError as e :
948+ logger .warning ("Error connecting to server" )
949+ yield e .request .url , "Error connecting to server"
950+ except requests .RequestException as e :
951+ logger .warning ("Error with response" )
952+ yield e .request .url , str (e )
953+ except Exception :
954+ logger .exception ("Unknown Exception" )
955+ yield "Unknown URL" , "Unknown error"
956+ except concurrent .futures .TimeoutError :
957+ for future in futures :
958+ future .cancel ()
959+ yield "error" , "Scrape timed out. Some requests may not have completed."
953960
954961 try :
955962 return JsonResponse (dict (query ()))
0 commit comments