Я запускаю скрипт Python, который массово индексирует документы в домен OpenSearch. Иногда массовые запросы завершаются с ошибкой ReadTimeoutError, как показано ниже:
Traceback (most recent call last):
File "/.../urllib3/connectionpool.py", line 536, in _make_request
response = conn.getresponse()
...
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='my-opensearch-domain.com', port=443): Read timed out. (read timeout=15)
During handling of the above exception, another exception occurred:
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='my-opensearch-domain.com', port=443): Read timed out. (read timeout=15)
Я периодически наблюдаю эти тайм-ауты во время операций индексирования _bulk. Некоторые пакеты выполняются успешно, а другие истекают по истечении времени ожидания чтения по умолчанию.
Что я пробовал:
• Убедиться в стабильности моего интернет-соединения.
• Запуск меньшего пакета. размеры (например, 100 документов одновременно).
• Подтверждено, что кластер OpenSearch работоспособен и имеет достаточно ресурсов.
• Проверено, что индексирование работает большую часть времени, за исключением случаев большой нагрузки.
Вопросы:
• Как я могу предотвратить эти периодические исключения ReadTimeoutError?
• Есть ли параметры конфигурации (тайм-ауты, повторные попытки), которые я могу настроить в клиенте OpenSearch Python или библиотеке запросов?
• Существуют ли передовые методы выполнения больших заданий массового индексирования в OpenSearch?
Любые рекомендации по устранению этих тайм-аутов или передовые методы обработки больших заданий массового индексирования будут полезны. оценил.
import json
import logging
import time
import boto3
from requests_aws4auth import AWS4Auth
from opensearchpy import OpenSearch, RequestsHttpConnection
# Configure basic logging (ERROR only to reduce verbosity)
logger = logging.getLogger(__name__)
logger.setLevel(logging.ERROR)
# Configuration (use placeholders, no PII)
AWS_REGION = "us-east-1" # Replace as needed
OPENSEARCH_ENDPOINT = "your-opensearch-domain.us-east-1.es.amazonaws.com" # Replace with your endpoint
INDEX_NAME = "test-index"
def create_opensearch_client(timeout=15, max_retries=3, pool_maxsize=10):
session = boto3.Session(region_name=AWS_REGION)
credentials = session.get_credentials()
awsauth = AWS4Auth(
credentials.access_key,
credentials.secret_key,
AWS_REGION,
"es",
session_token=credentials.token,
)
return OpenSearch(
hosts=[{"host": OPENSEARCH_ENDPOINT, "port": 443}],
http_auth=awsauth,
use_ssl=True,
verify_certs=True,
timeout=timeout,
max_retries=max_retries,
retry_on_timeout=True,
connection_class=RequestsHttpConnection,
pool_maxsize=pool_maxsize,
)
def bulk_index_docs(opensearch_client, docs, batch_size=100):
# Index documents in batches
for i in range(0, len(docs), batch_size):
batch = docs[i:i+batch_size]
bulk_body = []
for doc in batch:
doc_id = doc.get("id", f"doc_{i}")
bulk_body.append({"index": {"_index": INDEX_NAME, "_id": doc_id}})
bulk_body.append(doc)
try:
response = opensearch_client.bulk(body=bulk_body)
if response.get("errors"):
logger.error("Some documents failed to index.")
else:
# In a minimal reproducible example, we won't log successes to stdout
pass
except Exception as e:
logger.error(f"Bulk indexing failed: {str(e)}")
def main():
# Minimal example documents
docs = [
{"id": "1", "name": "Alice", "updated_at": "2024-12-17T10:00:00Z"},
{"id": "2", "name": "Bob", "updated_at": "2024-12-17T10:05:00Z"},
]
client = create_opensearch_client(timeout=15, max_retries=3, pool_maxsize=5)
bulk_index_docs(client, docs, batch_size=1)
if __name__ == "__main__":
main()
Подробнее здесь: https://stackoverflow.com/questions/792 ... search-dom
Urllib3.Exceptions.ReadTimeoutError: HTTPSConnectionPool(host='my-opensearch-domain.com', port=443): время ожидания чтен ⇐ Python
Программы на Python
1734479929
Anonymous
Я запускаю скрипт Python, который массово индексирует документы в домен OpenSearch. Иногда массовые запросы завершаются с ошибкой ReadTimeoutError, как показано ниже:
Traceback (most recent call last):
File "/.../urllib3/connectionpool.py", line 536, in _make_request
response = conn.getresponse()
...
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='my-opensearch-domain.com', port=443): Read timed out. (read timeout=15)
During handling of the above exception, another exception occurred:
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='my-opensearch-domain.com', port=443): Read timed out. (read timeout=15)
Я периодически наблюдаю эти тайм-ауты во время операций индексирования _bulk. Некоторые пакеты выполняются успешно, а другие истекают по истечении времени ожидания чтения по умолчанию.
Что я пробовал:
• Убедиться в стабильности моего интернет-соединения.
• Запуск меньшего пакета. размеры (например, 100 документов одновременно).
• Подтверждено, что кластер OpenSearch работоспособен и имеет достаточно ресурсов.
• Проверено, что индексирование работает большую часть времени, за исключением случаев большой нагрузки.
Вопросы:
• Как я могу предотвратить эти периодические исключения ReadTimeoutError?
• Есть ли параметры конфигурации (тайм-ауты, повторные попытки), которые я могу настроить в клиенте OpenSearch Python или библиотеке запросов?
• Существуют ли передовые методы выполнения больших заданий массового индексирования в OpenSearch?
Любые рекомендации по устранению этих тайм-аутов или передовые методы обработки больших заданий массового индексирования будут полезны. оценил.
import json
import logging
import time
import boto3
from requests_aws4auth import AWS4Auth
from opensearchpy import OpenSearch, RequestsHttpConnection
# Configure basic logging (ERROR only to reduce verbosity)
logger = logging.getLogger(__name__)
logger.setLevel(logging.ERROR)
# Configuration (use placeholders, no PII)
AWS_REGION = "us-east-1" # Replace as needed
OPENSEARCH_ENDPOINT = "your-opensearch-domain.us-east-1.es.amazonaws.com" # Replace with your endpoint
INDEX_NAME = "test-index"
def create_opensearch_client(timeout=15, max_retries=3, pool_maxsize=10):
session = boto3.Session(region_name=AWS_REGION)
credentials = session.get_credentials()
awsauth = AWS4Auth(
credentials.access_key,
credentials.secret_key,
AWS_REGION,
"es",
session_token=credentials.token,
)
return OpenSearch(
hosts=[{"host": OPENSEARCH_ENDPOINT, "port": 443}],
http_auth=awsauth,
use_ssl=True,
verify_certs=True,
timeout=timeout,
max_retries=max_retries,
retry_on_timeout=True,
connection_class=RequestsHttpConnection,
pool_maxsize=pool_maxsize,
)
def bulk_index_docs(opensearch_client, docs, batch_size=100):
# Index documents in batches
for i in range(0, len(docs), batch_size):
batch = docs[i:i+batch_size]
bulk_body = []
for doc in batch:
doc_id = doc.get("id", f"doc_{i}")
bulk_body.append({"index": {"_index": INDEX_NAME, "_id": doc_id}})
bulk_body.append(doc)
try:
response = opensearch_client.bulk(body=bulk_body)
if response.get("errors"):
logger.error("Some documents failed to index.")
else:
# In a minimal reproducible example, we won't log successes to stdout
pass
except Exception as e:
logger.error(f"Bulk indexing failed: {str(e)}")
def main():
# Minimal example documents
docs = [
{"id": "1", "name": "Alice", "updated_at": "2024-12-17T10:00:00Z"},
{"id": "2", "name": "Bob", "updated_at": "2024-12-17T10:05:00Z"},
]
client = create_opensearch_client(timeout=15, max_retries=3, pool_maxsize=5)
bulk_index_docs(client, docs, batch_size=1)
if __name__ == "__main__":
main()
Подробнее здесь: [url]https://stackoverflow.com/questions/79289579/urllib3-exceptions-readtimeouterror-httpsconnectionpoolhost-my-opensearch-dom[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия