Python Pandas - отправляет один пост-URL-запрос на строку данных с произвольной задержкой между ними - PullRequest
0 голосов
/ 27 августа 2018

С одной стороны у нас есть этот пандас Dataframe:

import pandas as pd
df = {"EventName":{"0":"Event234","1":"Event235","2":"Event236"},"EventType":{"0":"TypeA","1":"TypeA","2":"TypeB"},"Data1":{"0":"Data266276","1":"Data266277","2":"Data266278"},"Data2":{"0":"Data432562","1":"Data432563","2":"Data432564"}}
df = pd.DataFrame(df)
print(df)

Возвращая это:

  EventName EventType       Data1       Data2
0  Event234     TypeA  Data266276  Data432562
1  Event235     TypeA  Data266277  Data432563
2  Event236     TypeB  Data266278  Data432564

, а с другой стороны у нас есть следующая функция, которая отправляет почтовый запрос:

import time
import requests

# Test post url calls
# /5184395/testovyi-server-http-prinimayschii-zaprosy-get-post
AlertURL = "http://httpbin.org/anything"

def alert(msg):
    nowdt = time.strftime("%m/%d/%Y %H:%M:%S")
    payload = {"msg": str(nowdt)+", "+msg}    
    response = requests.post(AlertURL, payload)      
    print(response.text)

alert(df.EventName+" "+df.EventType+" "+df.Data1+" "+df.Data2)

Последняя строка отправляет один (1) запрос со всеми строками кадра данных.

И мы хотим отправить один запрос на строку данных (три в нашем случае), с задержкой в ​​2 секунды между ними.

Как нам это сделать?

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

Вы можете использовать iterrows () для итерации по фрейму данных и time.sleep (), чтобы подождать некоторое время более или менее детерминированным образом:

for index, row in df.iterrows(): 
  alert(row['EventName']+" "+row['EventType']+" "+row['Data1']+" "+row['Data2'])
  time.sleep(2) #2 seconds

Если вы предпочитаете, вы можете поместить инструкцию сна в функцию оповещения рядом с запросом, для ясности.

0 голосов
/ 27 августа 2018
for row in df.iterrows():
    alert(row[0] + " " + row[1] + " " + row[2] + " " + row[3])
    time.sleep(2)
0 голосов
/ 27 августа 2018

используйте цикл for с формой вашего информационного кадра, чтобы пройти через каждую строку. Используйте i, чтобы указать, какую строку вы хотите отправить. Наконец, используйте time.sleep для ожидания.

for i in range(df.shape[0]):
    alert(df.EventName[i]+" "+df.EventType[i]+" "+df.Data1[i]+" "+df.Data2[i])
    time.sleep(2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...