22# See the file 'LICENSE' for copying permission.
33
44import logging
5+ import time
56from abc import ABCMeta
67from typing import Dict
78
89import requests
10+ from requests .exceptions import ChunkedEncodingError
911
1012from api_app .analyzers_manager .classes import BaseAnalyzerMixin
1113from api_app .analyzers_manager .exceptions import (
1820
1921class TriageMixin (BaseAnalyzerMixin , metaclass = ABCMeta ):
2022 # using public endpoint as the default url
21- url : str = "https://api. tria.ge/v0/"
23+ url : str = "https://tria.ge/api /v0/"
2224 private_url : str = "https://private.tria.ge/api/v0/"
2325 report_url : str = "https://tria.ge/"
2426
@@ -40,6 +42,7 @@ def config(self, runtime_configuration: Dict):
4042 self .poll_distance = 3
4143 self .final_report = {}
4244 self .response = None
45+ self .events_response = None
4346
4447 @property
4548 def session (self ):
@@ -57,7 +60,23 @@ def manage_submission_response(self):
5760 if sample_id is None :
5861 raise AnalyzerRunException ("error sending sample" )
5962
60- self .session .get (self .url + f"samples/{ sample_id } /events" )
63+ for _try in range (self .max_tries ):
64+ logger .info (f"triage events polling for result try #{ _try + 1 } " )
65+ try :
66+ self .events_response = self .session .get (
67+ self .url + f"samples/{ sample_id } /events"
68+ )
69+ if self .events_response .status_code == 200 :
70+ break
71+ time .sleep (self .poll_distance )
72+ except ChunkedEncodingError as e :
73+ logger .info (f"Detected { e } on try #{ _try + 1 } " )
74+ continue
75+ else :
76+ if self .events_response :
77+ self .events_response .raise_for_status ()
78+ else :
79+ raise AnalyzerRunException ("error requesting sample events" )
6180
6281 self .final_report ["overview" ] = self .get_overview_report (sample_id )
6382
0 commit comments