Trigger lancement d'un script Python3

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Trigger lancement d'un script Python3

Message par silver-slider » sam. 23 avr. 2016 22:01

Bonsoir,

j'ai lu pas mal de choses et leurs contraire aujourd'hui, certains exemples que je n'ai pas reussi a adapté ( ca c'est pas trop étonnant ) mais avant de m'arracher les cheveux, ou du moins le peu qu'il en reste, j'ai une question existentielle:
- peut on lancer un script Python grâce a un Trigger sur un table MySQL ?

En fait j'aurai aimé pouvoir lancer un script de récupération de données (et conversion en csv) lorsque les données arrivent dans la table... j'avais trouvé ce modèle de Trigger :

Code : Tout sélectionner

DELIMITER $
CREATE TRIGGER Test_Trigger
AFTER INSERT ON SFCRoutingTable
FOR EACH ROW
BEGIN
DECLARE cmd CHAR(255);
DECLARE result int(10);
SET cmd = CONCAT('python /home/triggers.py');
SET result = sys_exec(cmd);
END;
$
DELIMITER ;
coté SQL pas de soucis, mais j'ai jamais pigé comment récupérer l'évènement pour lancer le script :(
il me semble avoir compris qu'il fallait installer cette lib lib_mysqludf_sys mais je ne sais pas ce que ca vaut ?!

Dur.. dur.. d'être un boulet..

Je m'étais résigné a opter pour la solution de créer un cron pour déclencher le script toutes les x minutes, mais quand même j'aimerai bien comprendre ce système car il me parait plus "logique"...

d'avance merci pour vos réponses

bruno83
Messages : 72
Enregistré le : lun. 11 mai 2015 13:29

Re: Trigger lancement d'un script Python3

Message par bruno83 » dim. 24 avr. 2016 17:41

Coucou,
tape
mysql select version
Il faut > 5.2.0
puis avec phpmyadmin dans variables
mettre on sur event_scheduler
event.png
event.png (1.91 Kio) Vu 1365 fois
pas besoin de librairie. ;) aucun souci d'installation
J’ai utilisé le déclencheur d’évènement mais pour exécuter des requêtes mysql , exemple dans notre station météo on efface les données de plus d’un ans ,qui ressemble à un Cron interne (très gourmand en ressource sur un B+ le serveur mysql devenu plus lent) vaut mieux le Cron externe mais jamais un script python ,ça doit être possible .
Si ton événement est non périodique, un cron est inutile, tu peux effectuer différemment ta tâche, en plus simple le script qui remplis ta table lance un autre script à la fin pour gérer tes conversions.
Si c’est pour un serveur externe ou bien ton serveur apache couplé avec ton serveur mysql faire une socket avec une requête GET et gestion avec une page en php par exemple.
Aussi simple avoir deux processus indépendant sur la même machine qui partage de la RAM commune voir l’article que j’ai écrit ici sur framboise315 htm5 et python avec PHP.
Si ton client est web et que c’est lui qui décide le moment de la conversion (il veut visualiser le fichier par exemple) de l’ajax est très utilisée.
A+bruno

silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Re: Trigger lancement d'un script Python3

Message par silver-slider » mar. 26 avr. 2016 08:36

Bonjour Bruno,

Mon soucis c'est que ce qui rempli la table c'est la réception d'un SMS, difficile de récupérer une autre info, il me semble que ce n'est qu'en effectuant un contrôle régulier de la table ou en utilisant un Trigger que c'est possible ( Enfin a mon niveau de compréhension en tout cas ) j'ai pas reussi a déclencher le script avec le trigger, si doit le faire simplement comme ca, directement, je vais chercher, j'ai du me planter qq part ..
Je doute pas qu'il y est plein de solution "plus techniques" a mettre en oeuvre, mais j'essaie de faire avec celles ou j'ai un peu de connaissance... et vue l'étendue de celles-ci, effectivement, je suis limité dans les possibilités ;)

en tout cas merci ;)

bruno83
Messages : 72
Enregistré le : lun. 11 mai 2015 13:29

Re: Trigger lancement d'un script Python3

Message par bruno83 » mar. 26 avr. 2016 20:39

Bonjour,
Il y a quelque chose que je ne comprends pas si c’est un simple trigger (par un into). es-tu sur deux machines différentes ? un client extérieure écrit sur la table, le serveur MYSQL déclenche un processus mais si tu es sur la même machine je ne vois pas l’utilité d’un trigger sauf pour un évènement temporel avec event_scheduler.
Si tu gères ton gsm en python, exemple avec la liaison série asynchrone GPIO( avec un module gsm et commande AT) ,lors de la réception (en supposant que tu as une boucle infinie qui attend ton message) tu peux lancer ton script sans passer par ta base de données puis que ton gsm est sur la même machine.
A+bruno

silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Re: Trigger lancement d'un script Python3

Message par silver-slider » jeu. 28 avr. 2016 07:35

Bonjour,
Tout le "problème" vient de là Bruno c'est deux machines différentes ;)
j'ai pas trop le temps de tester en ce moment, mais si le trigger into est sensé lancer mon script, alors il le fera ou il devra dire pourquoi :twisted:

silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Re: Trigger lancement d'un script Python3

Message par silver-slider » dim. 1 mai 2016 10:46

Bon et bien j'arrive a rien... quand je crée le Trigger ma table ne se remplie même plus :roll:
bruno83 a écrit : Si tu gères ton gsm en python, exemple avec la liaison série asynchrone GPIO( avec un module gsm et commande AT) ,lors de la réception (en supposant que tu as une boucle infinie qui attend ton message) tu peux lancer ton script sans passer par ta base de données puis que ton gsm est sur la même machine.
C'est pas idiot, mais hélas je dois attendre que ces données soient insérés dans la table pour générer un csv... la base de données faisant quand même "tampon" en cas d'arrivées multiples et simultanées...

Répondre

Retourner vers « Python »