elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

For循环使用python仅迭代列表中的一个对象

For循环使用python仅迭代列表中的一个对象,python,elasticsearch,Python,elasticsearch,For循环只迭代函数提供的列表中的一个对象。下面是代码和终端日志 注意:-我想删除下面列表中的两个URL 函数delete_index_url输出如下:- ['https://vpc.xxx.es.amazonaws.com/staging-logs-2019.09.13', 'https://vpc.xxx.es.amazonaws.com/staging-logs-2019.09.16'] 您可以创建一个列表,存储响应并返回,而不是立即返回0或1并结束函数: def clean_index

For循环只迭代函数提供的列表中的一个对象。下面是代码和终端日志

注意:-我想删除下面列表中的两个URL

函数delete_index_url输出如下:-

['https://vpc.xxx.es.amazonaws.com/staging-logs-2019.09.13', 'https://vpc.xxx.es.amazonaws.com/staging-logs-2019.09.16']
您可以创建一个列表,存储响应并返回,而不是立即返回0或1并结束函数:

def clean_index( ):
  responses = []
  delete_urls = delete_index_url()    # above function output assign to variable
  for i in delete_urls:
        print(i)   
        try:
          req = requests.delete(i)
        except requests.exceptions.ConnectionError as e:
            print ('ERROR: Not able to connect to URL')
            responses.append(0)
        except requests.exceptions.Timeout as e:
            print ('ERROR: ElasticSearch time out')
            responses.append(0)
        except requests.exceptions.HTTPError as e:
            print ('ERROR: HTTP error')
            responses.append(0)
        else:
            print ('INFO: ElasticSearch response status code was %s' % req.status_code)
            if req.status_code != 200:
               responses.append(0)
            else:
               responses.append(1)
    return responses
print(clean_index())
在for循环n检查之前是否打印了delete_url列表?看起来您同时返回了0和1。其中一个将执行,因此您将在处理完第一个项目后立即返回。
INFO: Sorting indexes
['https://vpc.xxx.es.amazonaws.com/staging-logs-2019.09.13', 'https://vpc.xxx.es.amazonaws.com/staging-logs-2019.09.16']
INFO: Getting a list of indexes
INFO: ElasticSearch response status code was 200
INFO: Found 200 indexes
INFO: Sorting indexes
https://vpc.xxx.es.amazonaws.com/staging-logs-2019.09.13  # only 2019.09.13, not 2019.09.16 logs URLs
def clean_index( ):
  responses = []
  delete_urls = delete_index_url()    # above function output assign to variable
  for i in delete_urls:
        print(i)   
        try:
          req = requests.delete(i)
        except requests.exceptions.ConnectionError as e:
            print ('ERROR: Not able to connect to URL')
            responses.append(0)
        except requests.exceptions.Timeout as e:
            print ('ERROR: ElasticSearch time out')
            responses.append(0)
        except requests.exceptions.HTTPError as e:
            print ('ERROR: HTTP error')
            responses.append(0)
        else:
            print ('INFO: ElasticSearch response status code was %s' % req.status_code)
            if req.status_code != 200:
               responses.append(0)
            else:
               responses.append(1)
    return responses
print(clean_index())