Python: Optimisation de la fontion

Optimisation de la fontion

a marqué ce sujet comme résolu.

Bonjour :) ,

Je voudrais optimiser ma fonction car elle tourne en boucle plusieurs fois et prend plusieurs minutes à se connecter.

def gmail_request(shop,req_type,ressource,endpoints="",post_data={}):
    global user_id,api_key,client_id,client_secret,refresh_token,access_tokens
    tries = 0
    #print(shop)
    while tries < 20:
        try:
            cont = "https://www.googleapis.com/gmail/v1/users/{}/{}?{}key={}".format(user_id[shop],ressource,endpoints,api_key[shop])
            if req_type == "get":
                r = requests.get(cont,headers={"Authorization":"OAuth {}".format(access_tokens[shop])}, timeout=15)
                print(r.json())
            elif req_type == "post":
                r = requests.post(cont,headers={"Authorization":"OAuth {}".format(access_tokens[shop])},json=post_data, timeout=15)
            if r.status_code > 300:
                data = {"client_id":client_id[shop],"client_secret":client_secret[shop],"refresh_token":refresh_token[shop],"grant_type":"refresh_token"}
                r2 = requests.post("https://www.googleapis.com/oauth2/v4/token",data=data, timeout=15)
                print(r2.json())
                access_tokens[shop] = r2.json()["access_token"]
                continue #retry a request with a new access_token
            break
        except:
            #print("connexion error on gmail, retrying...")
            time.sleep(10)
            tries += 1
    return r

+0 -0

As-tu déjà une idée d’où la lenteur vient ? Tu fais un appel à googleapis, cet appel est-il rapide ? Si il est lent, l’est-il aussi quand tu fais cet appel manuellement (avec curl par exemple).

Tu peux ajouter print avec les timings pour débugger et au moins avoir une idée plus précise de quelle(s) ligne(s) posent problème.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte