2017-09-18 3 views
0

J'utilise zeep pour me connecter à l'API Call Center Five9 afin de récupérer le rapport du journal des appels.Python: Erreur Zeep

Mon code est le suivant:

class Five9api: 

    start = (datetime.now() - timedelta(days=1)).replace(hour=0, minute=0, second=0, microsecond=0) 
    end = datetime.now() 
    user = 'user' 
    pwd = 'pwd' 
    criteria = {'time': {'end': end, 'start': start}} 
    key = None 

    def __init__(self, folderName, reportName): 
     self.client = None 
     self.folderName = folderName 
     self.reportName = reportName 

    def open_client(self): 
     if self.client is None: 
      self.client = Five9(self.user, self.pwd) 

    def run_report(self): 
     identifier = self.client.configuration.runReport(folderName=self.folderName, reportName=self.reportName, 
                 criteria=self.criteria) 
     Five9api.key = identifier 

    def get_report_results(self): 
     get_results = self.client.configuration.getReportResult(Five9api.key) 

     return get_results 

Je reçois une erreur lorsque j'utilise la méthode run_report pour retourner une clé qui est passée sur la méthode get_report_results. Quelle est la cause de cette erreur suivante?

zeep.exceptions.Fault: Result is not ready due to process is not complete 

La seule façon de contourner cette erreur est d'introduire un time.sleep entre les 2 ci-dessus des méthodes comme si ...

Report = Five9api("Call Log Reports", "Call Log") 
Report.open_client() 
Report.run_report() 
time.sleep(5) 
data = Report.get_report_results() 

Répondre

0

Avant de récupérer les résultats du rapport avec getReportResult, vous pouvez vérifier si elle est prêt avec isReportRunning méthode:

def get_report_results(self): 
    while client.service.isReportRunning(identifier=Five9api.key, timeout=100): 
     None 
    get_results = self.client.configuration.getReportResult(Five9api.key) 

Voir la documentation complète ici: Configuration Web Services, API Reference Guide