Я читаю файл .XLSX, используя Pandas, перехожу к определенному столбцу «Des c», извлекаю текст и форматирую его, чтобы сделать почтовый запрос к API классификатора текста. Я получаю ответ в следующем формате:
{"AB C": {"IA": 90, "HX": 5, "GH": 5}, "EFG" : {"DF": 50, "TR": 40, "UI": 10}}
Я уже вставил столбцы «AB C» и столбец «EFG» в свой фрейм данных, используя pandas и для каждого получаемого выходного ответа я заполняю каждое значение ячейки правильным выходным ответом. например, в моем текущем ответе API {"IA": 90, "HX": 5, "GH": 5} and {"DF": 50, "TR": 40, "UI": 10
обновляется под этой конкретной записью и номером ячейки.
Позже я использую df.to_excel, чтобы добавить эти столбцы в мою текущую электронную таблицу.
I я могу написать код синхронно c, и он работает нормально, но в моей таблице 20К строк, и этот метод займет у меня более 15 часов, чтобы выполнить всю задачу.
Как я могу сделать асинхронный Запрос API с использованием aiohttp, чтобы я мог выполнять параллельные вызовы API асинхронно и повышать производительность своего кода.
Вот мой синхронный код с использованием запросов, который работает абсолютно нормально, но требует более 15 часов для выполнения более 30К записей . Как я могу изменить этот код для выполнения асинхронных запросов API
import pandas as pd
import requests
import json
classifierUrl = 'https://X.X.X.X:3000/input'
headers = {'Content-type': 'application/json'}
df = pd.read_excel(r'C:\Users\XXXX\Downloads\test.xml')
df.insert(18, 'ABC', 'n/a')
df.insert(19, 'EFG', 'n/a')
for index, row in df.iterrows():
if len(str(row["Desc"])) > 50:
data = {'text': row["Desc"]}
response = requests.post(classifierUrl, data=json.dumps(data), verify=False, headers=headers,
allow_redirects=False)
jsonResponse = response.json()
for k, v in jsonResponse.items():
if k == 'ABC':
for key, val in v.items():
df.at[index, 'ABC'] = json.dumps(v)[1:-1]
break
if k == 'Vertical':
for key, val in v.items():
df.at[index, 'EFG'] = json.dumps(v)[1:-1]
break
df.to_excel(r'C:\Users\XXXX\Downloads\test.xlsx', index=False)