Script python : mise à jour de token et fichier log
Résolu/Fermé- Script python : mise à jour de token et fichier log
- Script vidéo youtube - Guide
- Citizen code python avis - Accueil - Outils
- Ghost script - Télécharger - Polices de caractères
- Microsoft activation script - Accueil - Windows
- Script bat - Guide
2 réponses
12 oct. 2022 à 10:48
Bonjour,
Pas besoin de cron, tu peux programmer une tâche qui va se déclencher toutes les 5 minutes en python avec asyncio.
Voici un exemple qui montre comment faire :
import asyncio from signal import SIGINT, SIGTERM PERIOD = 1 # In seconds async def periodic(period): while True: print("periodic") await asyncio.sleep(period) def exit_loop(): for task in asyncio.all_tasks(): #print(f"cancel {task}") task.cancel() def main(): loop = asyncio.new_event_loop() for signal in [SIGINT, SIGTERM]: loop.add_signal_handler(signal, exit_loop) try: loop.run_until_complete(periodic(PERIOD)) except asyncio.exceptions.CancelledError: print("all tasks cancelled") if __name__ == "__main__": main()
Après, ça me paraît un peu étrange de régénérer un token à chaque fois, mais je ne sais pas comment marche l'API dont tu parles. Si tu prends des API classiques (par exemple twitter), tu génères un token par application une fois pour toute, l'application charge ce token, et ainsi depuis ton twitter tu peux ou non révoquer l'accès de cette application. Bref, ça vaudrait le coup de voir si tu fais vraiment les choses dans les règles de l'art...
Bonne chance
12 oct. 2022 à 09:46
bonjour,
tout sera plus clair quand tu auras fait la boucle.
12 oct. 2022 à 09:53
Quand tu auras décidé cela, tu pourras commencer à réfléchir à comment préserver "token" d'une exécution à l'autre.
12 oct. 2022 à 09:56
Ok, je pense que faire la boucle à l'intérieur du programme est mieux non ? Plutôt que d'exécuter le script par crontab à chaque fois.
12 oct. 2022 à 10:36
C'est certainement plus simple, le token sera automatiquement préservé, sans rien faire de particulier.
13 oct. 2022 à 10:01
Bonjour et merci pour votre réponse.
Je n'ai jamais utilisé asyncio ou même tout ce qui est co-routine, tâche asynchrone, etc. en python. Je me suis donc référencé pour mieux comprendre votre code.
Pour l'instant, j'ai fait le test avec une période de 5 secondes et cela fonctionne. Je pense que je vais garder finalement une période assez petite.
Pour revenir à l'API, l'outil révoque mon token toutes les 30 minutes (par défaut et par sécurité). En fait, je peux même augmenter ce temps de révocation mais je trouve que c'est plutôt bien de laisser ceci comme ça.
yg_be:
"C'est certainement plus simple, le token sera automatiquement préservé, sans rien faire de particulier."
Le programme étant toujours en cours, il faut donc que je créé une variable globale qui est modifiée à chaque régénération, tout simplement, non ?
13 oct. 2022 à 10:34
Pour revenir à l'API, l'outil révoque mon token toutes les 30 minutes (par défaut et par sécurité). En fait, je peux même augmenter ce temps de révocation mais je trouve que c'est plutôt bien de laisser ceci comme ça.
Ah ok ! En fait, cette considération dépend de la longueur de tes tokens :
Bonne chance
Modifié le 13 oct. 2022 à 11:31
Concernant le reste de ton message #9, ta compréhension du script est correcte.
À moins que tu aies d'autres questions, peux-tu basculer ce sujet en résolu ?
Bonne chance
13 oct. 2022 à 11:54
En effet, il suffit de mettre à jour une variable (permanente), globale ou pas, suivant la façon dont le script est écrit.
14 oct. 2022 à 10:48
Concernant le message #14 : pour les prochaines fois, vu qu'il s'agit d'un autre problème, même s'il te paraît mineur, ouvre une nouvelle discussion pour garder le fil de discussion propre et spécifique à un seul problème.
Réponse rapide :
Si on parle d'une méthode, tu peux aussi mémoriser l'information en question dans l'instance de l'objet que tu manipules.
Si on parle d'une fonction :
Bonne chance