#python #pandas #elastic-cloud
Вопрос:
Я пытаюсь сделать цикл for внутри бесконечного цикла while. Этот бесконечный цикл получает данные 3-х различных индексов от ElasticCloud для последующей работы с ними. Я пытаюсь наложить условия на второй цикл, но он оказывается бесконечным. Мне нужен первый цикл для получения данных, а второй цикл для выполнения процесса с индексом.
Вот что я пытаюсь сделать:
while(True):
datetime_BO = datetime.now(tz_BO) #Date of today
ed_data1 = ed.DataFrame(es, "_index_1").tail(2) #Get last data of index 1
ed_data2 = ed.DataFrame(es, "_index_2").tail(2) #Get last data of index 2
panda_data1 = ed.eland_to_pandas(ed_data1) #Converting to pandas
panda_data2 = ed.eland_to_pandas(ed_data2)
panda_data1 = panda_data1.sort_values(by="@timestamp") #Sort by date
panda_data2 = panda_data2.sort_values(by="@timestamp")
panda_data1.reset_index(drop=True, inplace=True) #Index date
panda_data2.reset_index(drop=True, inplace=True)
panda_data1 = panda_data1.groupby(panda_data1.index // 2).mean() #Mean this measure
panda_data2 = panda_data2.groupby(panda_data2.index // 2).mean()
i = 5
list_n = [] #Empty list
n = 0
while n < i:
ed_data3 = ed.DataFrame(es, "heartbeat-*").tail(4) #Getting last data of this index
panda_data3 = ed.eland_to_pandas(ed_data3) #Converting to pandas
panda_data3 = panda_data3.sort_values(by="@timestamp") #Sorting by date
panda_data3 = panda_data3[panda_data3['field_1'].isin(['Yes','No'])] #Getting in the column "field_1" all values with "Yes" or "No"
panda_data3.reset_index(drop=True, inplace=True) #New index
status = panda_data3.iloc[:,1] #Lock the "field_1" column
if status[0] == "down" and status[1] == "No": #If in field_1 column there is a "No", give a 0
uptime = 0
elif status[0] == "up" or status[1] == "Yes": #If in field_1 column there is a "No", give a 1
uptime = 1
else:
pass
list_n.append(int(uptime)) #Data for empty list
time.sleep(5) #Wait 5 secs
n =1
print(list_n)
К чему я i = 10
клоню, так это к тому, что
[1]
[1, 1]
[1, 1, 1]
[1, 1, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[1]
[1, 1]
[1, 1, 1]
[1, 1, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1, 1]
Мне нужен этот выход из цикла после выполнения условия n = i
и продолжения получения других данных, но он попадает в вечный цикл.
Изменить 1:
I tried to use break
after
n = 1
print(list_n)
break
But now, the infinite while(true)
is not working and stop to get data.
I tried to use break
after
n = 1
print(list_n)
break
Но теперь бесконечный выход показывает
[1]
[1]
[1]
[1]
...
Есть идеи, что я сейчас делаю?