#python #python-requests
Вопрос:
Я написал пример кода python для отправки данных журнала в конечную точку Fluntd стека EFK. Когда я отправляю 400 журналов за раз, код состояния равен 200 и может видеть все журналы на панели управления Kibana, но когда я отправляю 500 журналов за раз, код состояния равен 414.
Вот пример кода на python:
import sys
import json
from datetime import datetime
import random
import requests
f = open('/etc/td-agent/data2.json',)
data = json.load(f)
input = file(sys.argv[-1])
actions = []
url = ''
u_name = ''
p_word = ''
for line in input:
temp = json.loads(line)
tenantid = temp['HTTP_FLUENT_TAG']
message = temp['message']
message_json = json.loads(message)
h_name = data['account_details'][tenantid]['hostname']
u_name = data['account_details'][tenantid]['username']
p_word = data['account_details'][tenantid]['password']
url = 'https://' h_name
for element in message_json:
temp = str(element['date'])
url = url '?time=' temp
action = {
"msg": element['log'],
"id": element['ID']
}
actions.append(action)
r = requests.post(url, auth=(u_name, p_word), json=actions)
print(r.status_code)
f.close()
Может ли кто-нибудь, пожалуйста, помочь, как отправлять огромную нагрузку за один раз на конечную точку Fluentd.
Для конечной точки Elasticsearch мы можем использовать api elasticsearch, и он также имеет функцию массового доступа, которая помогает отправлять огромное количество данных одновременно. Я ищу, есть ли такой способ для конечной точки Fluentd.
Комментарии:
1. Не могли бы вы создать файл json и отправить его в запросе?
2. @Omkar, Нужно ли мне создать отдельный файл json, а затем записать все действия в этот файл json и после этого опубликовать его в запросе ?
3. @triptest_1212 Это можно сделать двумя способами, либо двумя способами: 1. создайте файл JSON с json тела запроса и заархивируйте их, чтобы отправить их все в одном запросе, 2. вызовите API несколько раз с максимально возможными json, как вы упомянули выше
4. @Omkar Первый вариант кажется более выполнимым для моего случая, мне нужно отправлять огромные нагрузки, такие как 600 000 журналов, многократный вызов API может занять много времени, тогда как первый вариант с одним запросом может занять меньше времени.
5. @triptest_1212 Конечно. Я добавлю это в качестве ответа, не могли бы вы, пожалуйста, принять это как ответ?
Ответ №1:
Есть два способа сделать это, либо есть два способа.
- создайте файл JSON с объектами JSON тела запроса и заархивируйте их, чтобы отправить все в одном запросе
- Вызывайте API несколько раз с максимально возможными JS, как вы упомянули выше.