Request doesn't provide a way to refresh headers for each retry, making it impossible to regenerate expired Authorization headers

Abierto
#5,975 10 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
api, networking

Línea de trabajo

Empieza rastreando los reintentos a través de requests.adapters.HTTPAdapter y urllib3.util.retry.Retry, y después compara ese flujo con AuthBase.call en la implementación enlazada de edgegrid.py. Confirma si cada reintento vuelve a invocar la autenticación; se considerará terminado cuando los encabezados Authorization expirados puedan regenerarse para cada reintento y el comportamiento esté documentado o cubierto por una prueba adecuada.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

I am using requests 2.23.0 with Python 3.8.

My app configures the requests.packages.urllib3.util.retry.Retry instance and then passes it via the max_retries arg to requests.adapters.HTTPAdapter constructor and then mounts the adapter as follows:

class RetriableSslSession(requests.Session):
    def __init__(self):
        super(RetriableSslSession, self).__init__()

        self.mount('https://', create_default_ssl_adapter())

Then before making a request, my app sets session.auth to an instance of EdgeGridAuth that is derived from requests.auth.AuthBase.

Since EdgeGridAuth implements the AuthBase.__call__ method, I expected that the Authorization header would be generated for each retry. However, in our apache proxy logs, we're seeing the same Authorization header reused from time to time, which suggests that retries are not causing the Authorization header to be generated.

Could you please let me know what I may be doing wrong and explain how to cause the Authorization header to be re-generated for each Retry?

Lenguaje dominante
Python
Estrellas
54.7k
Forks
10.8k
Merge medio
18 min
PR fusionados (30 d)
1

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de psf/requests

Todos los issues de psf/requests

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.