00:00 <mdk> seluj78: j'sais plus si on en a un sur storage.afpy.org (que je backup aussi sur mon NAS perso)
00:00 <mdk> seluj78: dans tous les cas, rainette backup pas storage, donc si storage tombe, on perd des choses (enfin non y'a mon NAS)
00:00 <mdk> (et tkt pour mon NAS c'est pas 200 vidéos de PyCon qui vont lui faire peur : /dev/md1p1 11T 4.9T 5.5T 48% /srv)
00:01 <seluj78> Faut vraiment refaire l'archi complète de l'afpy
00:01 <seluj78> Ahah nice
00:08 <mdk> Bah doucement mais sûrement, https://github.com/afpy/infra#todo :)
00:09 <mdk> faire du ménage d'abord, découvrir l'existant (j'ai presque fait le tour je pense) puis porter jail par jail
00:09 <mdk> seluj78: va m'faloir une machine par contre hin, j'fait ça pour le moment sur une machine a moi chez online.net
00:10 <seluj78> Ouais carrément, cc debnet ?
00:10 <seluj78> A mettre à l'ordre du jour
09:13 <natim87> vstinner: Oui désolé j'étais parti dans mon truc et j'ai même pas réalisé que j'écrivais en anglais 😕
09:13 <natim87> Si j'ai bien compris le mock ressemble à ça https://stackoverflow.com/a/34828288/186202
09:14 <vstinner> natim87: haha, pas de soucis
09:15 <vstinner> seluj78: bon j'suis largé, j'ai reçu un mail du président hier à minuit pour dire "rdv à 18h". rdv quand ? hier ? :)
09:15 <vstinner> seluj78: j'avais noté le 20 dans mon agenda!?
09:17 <natim87> vstinner: Si je remplace `asyncio.run()` par `asyncio.get_event_loop().run_until_complete() j'ai pas le soucis`
09:17 <natim87> seluj78: Moi aussi j'ai noté le 20
09:21 <seluj78> vstinner, natim87: c'est normal la mailing liste à crash les mails était décalés
09:21 <natim87> Ok
09:38 <vstinner> natim87: alors si tu veux, un jour dans ma vie j'ai compris asyncio, depuis j'ai un peu oublié :-D
09:38 <vstinner> natim87: bien que je viens d'écrire https://vstinner.github.io/asyncio-proactor-wsasend-memory-leak.html sur un bug que j'ai corrigé y'a 2 mois :-D
09:38 <vstinner> seluj78: c'est dommage
09:38 <natim87> En fait je pense que c'est un bug de asyncio.run
09:39 <natim87> Car en passant par loop.run_until_complete ça fonctionne
09:39 <natim87> Mais je comprends très bien que tu en ais marre qu'on te parle sans cesse de asyncio
09:39 <natim87> Désolé
09:48 <vstinner> natim87: oh non, ça va, de moins en moins de personnes m'en parle
09:48 <vstinner> natim87: là tu viens pour un bug pointu
09:48 <vstinner> natim87: je comprends que asyncio est devenu plus courant si on me pose moins de questions. ou alors c'est passé de mode ? ça j'en doute
09:50 <vstinner> natim87: tiens, vu que je t'ai sous la main : est-ce que tu as essayé asyncio sous Windows ?
09:50 <vstinner> natim87: je me demande pourquoi je suis le seul à avoir vu une énorme fuite mémoire dans ProactorEventLoop :)
09:50 <natim87> Non jamais essayé asyncio sous Windows
09:51 <natim87> En tous cas moi je fais pratiquement plus que du asyncio pour mes services en python
09:51 <natim87> là le bug en question c'est du asyncio dans du Django 😂
09:51 <vstinner> natim87: et pour déboguer du asyncio, ça va ?
09:51 <natim87> Comme pour du python normal
09:51 <vstinner> natim87: perso j'attends toujours un outil pour suivre les handles & tasks
09:52 <natim87> Après je suis biaisais car j'ai fait du gevent et du tornado
09:52 <vstinner> natim87: contextvars devrait pas mal aider pour ça !
09:52 <natim87> Donc à côté c'est le paradis
09:52 <vstinner> natim87: si tu survis à gevent, asyncio doit être comme être en vacances nan ? :)
09:52 <vstinner> voilà
09:52 <vstinner> les bugs gevent : beuh
09:52 <natim87> ...
09:52 <vstinner> gevent est génial quand ça marche
09:53 <vstinner> quand ça marche pas. alors... c'est quoi greenlet ? de l'assembleur ? attends, comme ça marche en fait ? ... ah d'accord...
09:53 <vstinner> magie
09:53 <natim87> #FamousLastWords: gevent c'est génial quand ça marche
09:53 <seluj78> vstinner: c'est mdk qui a débug ça cette nuit, on va voir si sa recommence
09:53 <vstinner> natim87: Twisted est un peu pareil. c'est facile à écrire. quand il faut tirer la chaine de Deferred... outch
09:54 <vstinner> seluj78: si mdk remarche ? tu l'as rebooté ?
09:54 <vstinner> seluj78: aux dernières nouvelles, il était entré dans un métro :)
09:56 <vstinner> natim87: je suis un peu anxieux pour Windows car je me suis engagé auprès de Yury Selivanov et Andrew Svetlov pour dire que ProactorEventLoop est stable, ahem
09:56 <vstinner> natim87: on a mis cette implémentation par défaut sous Windows dans Python 3.8
09:57 <vstinner> natim87: et là j'ai déterré des 4 gros bugs que j'ai corrigé dans ProactorEventLoop, ça me fait un peu peur maintenant :)
09:57 <vstinner> natim87: après, tant qu'un code n'est pas testé en prod, on sait jamais vraiment s'il est costaux...
09:57 <natim87> Voilà you nailed it
09:57 <vstinner> pour être battle-tested, faut passer par l'étape battle!
09:58 <natim87> Mon moto c'est : La prod c'est crado
09:58 <natim87> C'est ce que j'ai essayé de dire à mon stagiaire mais il veut pas comprendre 🕹️
09:59 <natim87> tarek allait même plus loin avec vaurien
09:59 <vstinner> natim87: j'ai entendu que le motto à Facebook est de souvent casser la prod :)
09:59 <natim87> La prod c'est tellement crado qu'on va simuler un truc crade pour être sur
09:59 <vstinner> natim87: enfin, dit d'une manière plus positive
09:59 <natim87> ahah
09:59 <natim87> Fail fast fail often
09:59 <vstinner> genre ils poussent plusieurs fois par mois la branche master en prod'
10:00 <natim87> Release quicky, release often
10:00 <natim87> Nous c'est plusieurs fois par jours
10:00 <natim87> Sentry driven released
10:00 <vstinner> natim87: « Move fast and break things » : Devise Facebook jusqu'en avril 2014
10:00 <vstinner> Depuis, le mot d'ordre est un peu moins sexy : « Move fast with stable infra »
10:01 <natim87> ...
10:01 <natim87> Si tu casses rien c'est que tu vas pas assez vite
10:01 <vstinner> j'ai entendu parler de super outils pour enregistrer puis rejouer de vraies requêtes en prod, puis les rejouer sur la préprod
10:01 <natim87> Je sais plus dans qu'elle boite, ils utilisent le nombre de bugs trouvés en QA pour estimer si l'équipe de dev est assez rapide
10:01 <vstinner> genre pour analyser des perfs, ou bien tester
10:03 <vstinner> natim87: un ami, ancien Facebook, m'a dit que le plus pénible était qu'ils devaient utiliser la version beta de Facebook
10:03 <vstinner> natim87: et qu'elle était vraiment boguée
10:03 <vstinner> natim87: ils utilisent des outils collaboratif dans Facebook directement
10:03 <vstinner> ça c'est l'autre device "manger la nature de votre chien" ou j'sais plus quoi :-D
10:09 <misc> "eat your own dog food"
10:18 <vstinner> misc: ah ouais, c'est mieux en VO :) merci
10:20 <vstinner> natim87: je pense que ton problème https://bugs.python.org/issue36222 est que run() est plus strict. tu dois modifier ton mock pour le faire passer pour un canard
10:20 <natim87> Oui je devrais tester avec debug=True pour voir
10:21 <natim87> Il y a aussi le fait que peut-être il essayer de lancer plusieurs loop en parallèle
10:26 <vstinner> natim87: loop.run() exige une coroutine, alors que gather() renvoie un sous-classe de Future
10:30 <natim87> Ok makes sense
10:31 <vstinner> natim87: 2e café. j'ai fermé ton ticket. https://bugs.python.org/issue36222
10:31 <vstinner> natim87: .run() crée une nouvelle event loop, alors que gather() utilise l'event loop courant, avant que run() ait crée la nouvelle
10:31 <vstinner> natim87: il faut passer par une coroutine intermédiaire, une coroutine n'est pas liée à une event loop
10:31 <natim87> wow
10:31 <natim87> Super
10:32 <vstinner> natim87: tu dois utiliser .run(), c'est plus mieux :)
10:33 <vstinner> .run_until_complete() est l'ancienne API bancale : .run() s'assure que les générateurs asynchrones sont stoppés quand tu sors de run()
10:33 <vstinner> natim87: la différence n'était pas importante quand Python ne supportait pas les générateurs asynchrones, introduits dans Python 3.7 :)
10:33 <vstinner> natim87: https://github.com/python/cpython/blob/1f58f4fa6a0e3c60cee8df4a35c8dcf3903acde8/Lib/asyncio/runners.py#L45-L50
10:33 <natim87> Makes sense
10:34 <vstinner> natim87: les générateurs asynchrones et context manager asynchrones sont géniaux à utiliser, mais alors l'implémentation, roh là là, faut être russe pour comprendre :-D
10:34 <vstinner> natim87: (Andrew est ukrénien, Yury est russe et canadien ;-))
17:59 <mdk> #du -sh /srv/backup/rsnapshot-afpy/
17:59 <mdk> 119G /srv/backup/rsnapshot-afpy/
17:59 <mdk> þ