algolia / algolia/algoliasearch-client-python

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

Ouverte
#512 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
207
Forks
63
Métriques de merge des PR
Aucune PR mergée en 30 j

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.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Examinez d’abord les détails de compatibilité de l’issue avec Google App Engine 1 (Python 2) ainsi que les indications liées de Requests. Documentez que les utilisateurs de GAE1 ont besoin de l’AppEngineAdapter de requests_toolbelt au lieu de l’adaptateur par défaut, et vérifiez que la documentation identifie clairement la configuration concernée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
documentation
Type d'issue
Documentation
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.