IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Relancer un programme python


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Relancer un programme python
    Bonjour,
    sur un raspberry un programme est lancé au démarrage et "attend" dans un while.
    Il s'urveille les GPIO avec un GPIO.add_event_detect(numero de pin,GPIO.BOTH,ma_fonction,300)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def ma_fonction(channel):
    	for x in range(len(Resultprog)):
    		if GPIO.input(listedespinsentres[x])== LISTE_ETAT_ENTRE[x]:
    			GPIO.output(listedespinssorties[x],LISTE_ETAT_SORTIE[x])
    Les numeros de pin sont récupéré dans des table MySQL.
    Ca marche bien.

    Je met à jour la table avec PHP.

    Ce que j'aimerais faire c'est relancer ce programme quand je met a jour la base MySQL, soit :
    -en détectant dans ce programme la modif de table
    -quand je met a jour la table avec PHP, je lance un script python qui arreterai et relancerai le premier programme
    -ou tout autres solutions , en gros c'est pour relancer les GPIO.add_event_detect() avec les données a jour.
    La version de Python :2.7.3

    (Pour ceux qui sont intéréssé,https://github.com/mimi35garry/my-ra...SortieMySQL.py et https://sites.google.com/site/thedomotique/)

    Merci d'avance pour ceux qui me liront.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 285
    Points : 36 773
    Points
    36 773
    Par défaut
    Salut,

    Si les mises à jour sont faites via un programme PHP pourquoi ne pas lancer le script Python depuis PHP?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse wiztricks
    le truc c'est qu'il faut que le programme qui contient les GPIO.add_event_detct() reste en fonction pour pouvoir appeler ma_fonction()
    Je voudrais ajouter ou supprimer des GPIO.add_event_detect dès qu'il y a une modif dans ma base.
    Peut etre que MySQL permet de lancer un programme externe quand il y a eu une modif?
    Merci de ton intérêt.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mimi35garry Voir le message
    Merci de ta réponse wiztricks
    le truc c'est qu'il faut que le programme qui contient les GPIO.add_event_detct() reste en fonction pour pouvoir appeler ma_fonction()
    Je voudrais ajouter ou supprimer des GPIO.add_event_detect dès qu'il y a une modif dans ma base.
    Peut etre que MySQL permet de lancer un programme externe quand il y a eu une modif?
    Merci de ton intérêt.
    Bonjour,

    Une question au hasard : pourquoi ne pas essayer de tout traiter dans un seul programme Python avec SQLite3 ?

    Doc officielle : https://docs.python.org/3/library/sqlite3.html

    @+.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 285
    Points : 36 773
    Points
    36 773
    Par défaut
    Salut,

    Citation Envoyé par mimi35garry Voir le message
    le truc c'est qu'il faut que le programme qui contient les GPIO.add_event_detct() reste en fonction pour pouvoir appeler ma_fonction()
    Je voudrais ajouter ou supprimer des GPIO.add_event_detect dès qu'il y a une modif dans ma base.
    Peut etre que MySQL permet de lancer un programme externe quand il y a eu une modif?
    Pourquoi demander dans un forum Python comment lancer un programme à partir d'un code PHP ou depuis MySQL?
    Si une telle option existe elle saura lancer n'importe quel programme qu'il soit ou pas écrit en Python... mais il faut poser la question dans le bon forum.

    Une autre option serait d'avoir un daemon (i.e. un programme qui tourne en permanence et donc pas besoin de le lancer).
    Son boulot sera de détecter les mises à jour de la base de donnée et de faire le boulot correspondant le cas échéant.
    Après la question pourrait être comment détecter qu'il y a eu des mises à jour dans une/des tables de la base?
    Vous pourriez ajouter un timestamp aux records et regarder toute les x (milli)secondes ce qui est "nouveau" pour le traiter...

    A vous de voir.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci tarball69
    j'ai regarder mais je ne suis pas un expert
    C'est avec qu'elle fonction ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mimi35garry Voir le message
    Merci tarball69
    j'ai regarder mais je ne suis pas un expert
    C'est avec qu'elle fonction ?
    Quelle fonction quoi qui comment ?

    Est-ce que vous pouvez développer la question ?

    @+.

  8. #8
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    J'ai pas du etre assez clair dans mon premier post.
    J'ai mon script1 qui surveille l'état des GPIO et qui reste actif avec un while.
    Jusque la ca marche comme je veux.
    Mais si je modifie les conditions de déclenchement d'un des GPIO et bien je suis obligé d'arreter et de relancer scrip1 pour qu'il aille lire une table ou sont stocké les infos sur mes GPIO.
    Donc ce que je recherche c'est soit dans script1 detecter la modif sur une table (genre quand il y a une modif j'appel une fonction qui efface les GPIO.add_event et en creer de nouveau avec la table a jour) ou quand je modifie la table vu que c'est avec php a la fin du script php je lance script2 qui arreterai script1 et le relancerai.
    J'espere avoir été plus clair.

  9. #9
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Peut-être qu'il existe l'équivalent de GPIO.add_event_detect() pour mysqldb ou sqlite3.

  10. #10
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Pourquoi demander dans un forum Python comment lancer un programme à partir d'un code PHP ou depuis MySQL?
    Si une telle option existe elle saura lancer n'importe quel programme qu'il soit ou pas écrit en Python... mais il faut poser la question dans le bon forum.

    Une autre option serait d'avoir un daemon (i.e. un programme qui tourne en permanence et donc pas besoin de le lancer).
    Son boulot sera de détecter les mises à jour de la base de donnée et de faire le boulot correspondant le cas échéant.
    Après la question pourrait être comment détecter qu'il y a eu des mises à jour dans une/des tables de la base?
    Vous pourriez ajouter un timestamp aux records et regarder toute les x (milli)secondes ce qui est "nouveau" pour le traiter...

    A vous de voir.

    - W
    Merci wiztricks
    c'est vrai que ma question n'est pas très bien formulé et elle se rapproche de
    "Après la question pourrait être comment détecter qu'il y a eu des mises à jour dans une/des tables de la base?
    Vous pourriez ajouter un timestamp aux records et regarder toute les x (milli)secondes ce qui est "nouveau" pour le traiter..."
    Donc je vais essayer de formuler une question correcte :
    Existe-t-il un moyen en python avec mysqldb de detecter automatique un changement dans une table qui peut lancer une fonction?
    Un genre de db.add_event_change(nom_de_table,callback:ma_fonction).
    Merci a vous.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En creusant un peu sur le net, j'ai trouvé ceci :

    http://patternbuffer.wordpress.com/2...pt-from-mysql/

    http://crazytechthoughts.blogspot.fr...rom-mysql.html

    http://dev.mysql.com/doc/refman/5.0/...-triggers.html

    https://www.google.fr/?gws_rd=ssl#q=...xternal+script

    si ça peut faire avancer le schmul... le schmlu... le mschmilu... les choses.

    @+.

  12. #12
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par tarball69 Voir le message
    Bonjour,

    En creusant un peu sur le net, j'ai trouvé ceci :

    http://patternbuffer.wordpress.com/2...pt-from-mysql/

    http://crazytechthoughts.blogspot.fr...rom-mysql.html

    http://dev.mysql.com/doc/refman/5.0/...-triggers.html

    https://www.google.fr/?gws_rd=ssl#q=...xternal+script

    si ça peut faire avancer le schmul... le schmlu... le mschmilu... les choses.

    @+.
    Merci tarball69,
    je regarde notament au niveau des trigger et de sys_exec()
    J'espere que ça va m'aider.

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 285
    Points : 36 773
    Points
    36 773
    Par défaut
    Salut,

    Citation Envoyé par mimi35garry Voir le message
    Donc je vais essayer de formuler une question correcte :
    Existe-t-il un moyen en python avec mysqldb de detecter automatique un changement dans une table qui peut lancer une fonction?
    Un genre de db.add_event_change(nom_de_table,callback:ma_fonction).
    Ce que j'en dis c'est qu'on risque de ne pas vous en apprendre plus que ce que vous ramasseriez en cherchant un peu sur Google.
    S'il y a des experts qui pratiquent le "mysqldb", ils ne traînent peut être pas dans ce forum.
    Ou plutôt, ils sévissent dans leurs forums...
    Et quelque part, si vous êtes ici c'est pour trouver des gens qui savent comment le mettre en œuvre... Farfouiller sur Google, vous pouvez le faire tout seul.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Ce que j'en dis c'est qu'on risque de ne pas vous en apprendre plus que ce que vous ramasseriez en cherchant un peu sur Google.
    S'il y a des experts qui pratiquent le "mysqldb", ils ne traînent peut être pas dans ce forum.
    Ou plutôt, ils sévissent dans leurs forums...
    Et quelque part, si vous êtes ici c'est pour trouver des gens qui savent comment le mettre en œuvre... Farfouiller sur Google, vous pouvez le faire tout seul.

    - W
    Merci, je vais essayé de voir si j'y arrive avec les conseils que vous m'avez donné.

Discussions similaires

  1. Réponses: 145
    Dernier message: 15/02/2009, 11h51
  2. [LG]Relancer le programme et chemin d'acces
    Par Niko92 dans le forum Langage
    Réponses: 2
    Dernier message: 16/12/2004, 11h56
  3. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo