Python — функция повтора

В коде у меня есть много вызовов функций, которые выполняют другую задачу на удаленной БД, в случае, если я запускаю вызов, который в некоторых случаях возвращает код как http code = 202 ("принятие"), поэтому также требуется, чтобы задача была выполнена вызов другой функции в режиме "повторить попытку",

Код:

            
class Trg:
    
    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)
        self.kwargs = kwargs
        self.trg_cb_connention = Cluster("http://"+ self._checkIfIP(self.TARGET_CB_DB)+ ":8091",ClusterOptions(PasswordAuthenticator(self.TARGET_USER,self.TARGET_PASSWORD)))
    ..... 
    .....



    def _ConnectToBucket(self):
        try:
          bucket = self.trg_cb_connention.bucket(self.trg_bucket_name)
#means bucket exist ,otherwise create 
          return True

        except Exception as e:

#bucket not exist ,creating
          self._CreateBucket()



    def _CreateBucket(self):
          try:
             self.bm = self.trg_cb_connention.buckets()
             response = self.bm.create_bucket(CreateBucketSettings(name=self.trg_bucket_name, bucket_type="couchbase", ram_quota_mb=100))
             if response.http_status == 202: #acepected
              #means "acepected:"
#now call to function which validate the bucket created
             
                self.retry_call(self._CheckBucketCreated())
                     
           
             else:
                print("to check:",response) 

    def retry_call(function_name, args=None, kwargs=None, retries=300):
          pass_on_args = args if args else []
          pass_on_kwargs = kwargs if kwargs else {}
          for index in range(1, retries+1):
            try:
                return function_name(*pass_on_args, **pass_on_kwargs)
            except Exception as error:
                if index == retries:
                    print("Failed %s attempts at calling: %s", retries, function_name)
                    raise
                else:
                    print("Failed %d attempt(s) at calling: %s", index, function_name)
                    print("Retrying") 

это не удалось для:

      Failed %d attempt(s) at calling: %s 1 MIG_ilceosp089
....
.......
........
Retrying
Failed %s attempts at calling: %s 300 MIG_ilceosp089
Error 'Trg' object is not callable

во-первых, почему это не удается? второе - не уверен, что я делаю это правильно, и мне любопытно, как правильно выполнить такую ​​​​операцию.

0 ответов

Другие вопросы по тегам