Présentation / tuto python & asyncio

Hello,
on en parlait ici Une bonne grosse pause dans un démon Python - #2 par Mips
du coup j’ai préparé un petit plugin jeedom (que je ne mettrai pas sur le market) pour démontrer un daemon python en full asyncio: GitHub - Mips2648/jeedom-aiodemo

le plugin peut être installé sur jeedom via github, il n’y a absolument rien à configurer, juste installer les dépendances et démarrer le démon, le plugin va créer un équipement et faire des choses que je vous laisse découvrir (mettez le log en debug avant)

j’ai essayé de documenter le plus clairement possible et de rendre le code le plus facile à lire possible mais bien entendu n’hésitez pas à poser vos questions ou partager vos retours ici :slight_smile:


Petit disclaimer d’usage:

je ne me prétend pas expert sur le sujet, il y a 6 ans je ne connaissais rien à python et j’ai commencé à regarder comment fonctionnaient les framework async en python il y a 3 ans (mais j’avais quelques connaissances sur le sujet dans d’autres langages avant ça).
Donc ce post et ce plugin ont juste vocation à partager quelques concepts de bases de ce que j’ai appris durant ces quelques années si certains sont intéressés histoire d’avoir un exemple simple (et qui tourne) pour commencer.
Il y a probablement des experts python travaillant depuis bien plus longtemps sur le sujet qui trouveront des choses à améliorer.

6 « J'aime »

Merci @Mips , j’y jetterai un oeil et m’en inspirerai volontiers si besoin

1 « J'aime »

@Mips, pas de licorne ? :frowning:

on la cherche encore

1 « J'aime »

Salut,

Est-ce que cette adresse callback est compatible avec docker ?

Je n’ai pas de Jeedom sous docker et ne peux pas tester…

edit: Je pose la question parce que dans le plugin jMQTT, j’ai vu qu’il est prévu une config spéciale. Je n’utilise pas jMQTT et ne sais pas si j’interpète mal le code… mais ça ressemble à ça :

        $callbackURL = jMQTTDaemon::get_callback_url();
        // To fix issue: https://community.jeedom.com/t/87727/39
        if ((file_exists('/.dockerenv')
             || config::byKey('forceDocker', jMQTT::class, '0'))
            && config::byKey('urlOverrideEnable', jMQTT::class, '0') == '1') {
            $callbackURL = config::byKey('urlOverrideValue', jMQTT::class, $callbackURL);
        }

Je ne comprend pas le lien avec le sujet initial; ta question est hors-sujet
pourquoi cherches-tu à savoir si cela fonctionne sous docker? c’est ca qu’il faudrait expliquer (dans un nouveau sujet)

ceci dit je n’ai pas testé ce plugin avec docker mais je ne vois pas pourquoi cela ne fonctionnerait pas:

  • je fais pareil avec tous mes plugins (et c’est évidement inspiré du plugin template et des plugins officiels) et la plupart (de mes plugins) sont régulièrement testés sous docker (pas à chaque version)
  • un container possède un stack réseau avec un adresse localhost; autrement dit on s’en fiche qu’on soit dans un container ou pas sur cette ligne de code
1 « J'aime »