algolia / algolia/algoliasearch-client-python

Google App Engine 1 (Python 2) Issue for making requests to algolia

Open
#512 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
207
Forks
63
PR merge metrics
No merged PRs in 30d

Description

- Version: 2.4.0

### Underlying cause
I am using Algolia in Google App Engine (GAE1) and we are using `requests` library to issue requests as well. However, due to GAE1 limitations, we need to use an additional library called `requests_toolbelt`. This library changes underlying `requests` library to use `urlfetch`. Details of that can be found [here](https://cloud.google.com/appengine/docs/standard/python/issue-requests).

In `Requester`, Algolia library is importing `HttpAdapter` which is the wrong adapter for the GAE1 that using `requests` library. It needs to import `AppEngineAdapter` from `requests_toolbelt` to correctly read the response otherwise request will fail.

I have fixed the problem by introducing a custom code.

```
import sys
if sys.version_info >= (3, 0):
self._session.mount("https://", HTTPAdapter(max_retries=Retry(connect=0)))
else:
from requests_toolbelt.adapters.appengine import AppEngineAdapter
self._session.mount('https://', AppEngineAdapter(max_retries=Retry(connect=0)))
```

This solution only works for the GAE1 which is fine for me. This issue is also can be closed. However, it would be helpful to have a section in Algolia Docs to mention this problem since it will affect other App Engine users.

Contributor guide

Open the contributing guide

Research direction

Review the issue's Google App Engine 1 (Python 2) compatibility details and the linked Requests guidance first. Document that GAE1 users need requests_toolbelt's AppEngineAdapter instead of the default adapter, and verify the documentation clearly identifies the affected setup.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
documentation
Issue type
Documentation
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.