Projet

Général

Profil

Development #59923

utils: mesurer et logger le temps pris par les requêtes HTTPs

Ajouté par Benjamin Dauvergne il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
20 décembre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Ça permettrait de pointer plus facilement un truc qui marche vraiment mal avec des chiffres, on pourrait même fournir un graphe, un jour.


Fichiers

Révisions associées

Révision 239aee2a (diff)
Ajouté par Benjamin Dauvergne il y a plus de 2 ans

utils: measure and log HTTP request's elapsed time (#59923)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

#2

Mis à jour par Thomas Noël il y a plus de 2 ans

Je me demandais si "send" comprenait la partie "établissement la connexion"... Et je me demande pourquoi tu calcules le temps passé ici et pas dans la méthode request ? (peut-être qu'il faut que je révise l'usage de ces deux méthodes request et send)

Dans jsonresponse : en cas de pépin réseau/DNS, e.response est None, donc duration=e.response.elapsed.total_seconds() ça ne va pas aller, il faut être un peu plus fin.

#3

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Thomas Noël a écrit :

Je me demandais si "send" comprenait la partie "établissement la connexion"... Et je me demande pourquoi tu calcules le temps passé ici et pas dans la méthode request ? (peut-être qu'il faut que je révise l'usage de ces deux méthodes request et send)

Ça dépend, si le pooling est effectif ou pas, les HTTPAdapter étant partagés pour un même type de connecteur1, mais je ne pense pas que ça ait grande importance.

Dans jsonresponse : en cas de pépin réseau/DNS, e.response est None, donc duration=e.response.elapsed.total_seconds() ça ne va pas aller, il faut être un peu plus fin.

HTTPError n'est jamais un pépin réseau/DNS, c'est produit uniquement par raise_for_status() (erreur HTTP 4xx ou 5xx) mais c'est produit par Session.request() et pas Session.send() et donc ce n'est pas loggé au niveau de la classe Requests.

[1]:

class Requests:
    def __init__(....):
        ... 
            adapter = Request.ADAPTER_REGISTRY.setdefault(type(self.resource), HTTPAdapter())

#4

Mis à jour par Thomas Noël il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée

Ca roule alors

#5

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 239aee2adde4ea6237048373d58e28af4868e016
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Mon Dec 20 14:30:50 2021 +0100

    utils: measure and log HTTP request's elapsed time (#59923)
#6

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#7

Mis à jour par Transition automatique il y a environ 2 ans

Automatic expiration

Formats disponibles : Atom PDF