algolia / algolia/algoliasearch-client-python
Google App Engine 1 (Python 2) Issue for making requests to algolia
- Lenguaje dominante
- Python
- Estrellas
- 207
- Forks
- 63
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
- 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.
Guía de contribución
Línea de trabajo
Revisa primero los detalles de compatibilidad del issue con Google App Engine 1 (Python 2) y la guía de Requests enlazada. Documenta que los usuarios de GAE1 necesitan el AppEngineAdapter de requests_toolbelt en lugar del adaptador predeterminado, y verifica que la documentación identifique claramente la configuración afectada.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- documentation
- Tipo de issue
- Documentación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100