algolia / algolia/algoliasearch-client-python
Getting AlgoliaUnreachableHostException("Unreachable hosts") when attempting to upload records via AWS Lambda
- Ngôn ngữ chính
- Python
- Star
- 207
- Fork
- 63
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
- Algolia Client Version: 2.5.0
- Language Version: Python
### Description
I am facing a similar issue as reported in this Past Issue - https://github.com/algolia/algoliasearch-client-python/issues/30.
StackTrace -
```
raise AlgoliaUnreachableHostException("Unreachable hosts") in retryst)fNotExist": True})
END RequestId: 0d549eca-dd2e-4884-9f43-0548a6db3674
REPORT RequestId: 0d549eca-dd2e-4884-9f43-0548a6db3674 Init Duration: 0.46 ms Duration: 4491.58 ms Billed Duration: 4500 ms Memory Size: 1024 MB Max Memory Used: 1024 MB
{"errorMessage": "Unreachable hosts", "errorType": "AlgoliaUnreachableHostException", "stackTrace": [" File \"/var/task/main.py\", line 37, in lambda_handler\n scan_and_upload_to_algolia()\n", " File \"/var/task/ddb_utils.py\", line 72, in scan_and_upload_to_algolia\n update_templates_data_in_algolia(algolia_records)\n", " File \"/var/task/algolia_utils.py\", line 21, in update_templates_data_in_algolia\n res = templates_v4_index.save_objects(records, {\"autoGenerateObjectIDIfNotExist\": True})\n", " File \"/var/task/algoliasearch/search_index.py\", line 69, in save_objects\n response = self._chunk(\"addObject\", objects, request_options, False)\n", " File \"/var/task/algoliasearch/search_index.py\", line 527, in _chunk\n raw_responses.append(self._raw_batch(requests, request_options))\n", " File \"/var/task/algoliasearch/search_index.py\", line 534, in _raw_batch\n return self._transporter.write(\n", " File \"/var/task/algoliasearch/http/transporter.py\", line 35, in write\n return self.request(verb, hosts, path, data, request_options, timeout)\n", " File \"/var/task/algoliasearch/http/transporter.py\", line 72, in request\n return self.retry(hosts, request, relative_url)\n", " File \"/var/task/algoliasearch/http/transporter.py\", line 94, in retry\n raise AlgoliaUnreachableHostException(\"Unreachable hosts\")\n"]}%
```
Code Snippet
```
def create_algolia_client():
algolia_api_key = os.environ.get("INVIDEO_ALGOLIA_API_ID").strip()
algolia_api_id = os.environ.get("INVIDEO_ALGOLIA_API_KEY").strip()
if algolia_api_id is not "" and algolia_api_key is not "":
algolia_client = SearchClient.create(algolia_api_id, algolia_api_key)
logger.info("algolia search client created")
return algolia_client
else:
logger.error("algolia id and key is missing, failed to create insights client")
def update_templates_data_in_algolia(records):
algolia_client = create_algolia_client()
templates_v4_index = algolia_client.init_index("templates_v4")
res = templates_v4_index.save_objects(records, {"autoGenerateObjectIDIfNotExist": True})
logger.info("Got Response from Algolia", res)
```
I am running this code snippet inside AWS Lambda.
After reading the possible solutions in past Issue. I added urllib3, requests[security] and pyOpenSSL libraries.
Here's the pyproject.toml -
```
python = "3.8.5"
algoliasearch = "^2.5.0"
urllib3 = "^1.26.6"
requests[security] = 2.9.1
pyOpenSSL = 20.0.1
```
We have performed following checks -
1. Api ID and Key are valid, were able to upload records from Local.
2. Record Object is valid.
3. Our Lambda is not in any VPC.
4. Ensured our Lambda is able to resolve Algolia Server by performing DNS Lookup on .algolia.net.
### Steps To Reproduce
1. Run the provided snippet inside AWS Lambda with above configuration for python.
2. Pass any valid record object and replace ID and Key with a valid one.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với algoliasearch/http/transporter.py, đặc biệt là đường dẫn retry được truy cập từ save_objects, và tái hiện ví dụ được cung cấp trong AWS Lambda bằng các phiên bản Python và client đã nêu. So sánh quá trình thực thi trên Lambda với việc upload cục bộ và xác minh rằng các bản ghi hợp lệ có thể được upload mà không gặp AlgoliaUnreachableHostException.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- aws, python
- Lĩnh vực
- api, backend, cloud
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 32/100