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 :

Utilisation de python-crontab


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Par défaut Utilisation de python-crontab
    Bonjour,

    Je suis un débutant tout frais de python (j'ai commencé hier )
    Je cherche à ajouter sur mon serveur linux Debian Jessie une tâche CRON dans la crontab de mon utilisateur web1 via un script python.
    J'ai trouvé le paquet python-crontab qui semble très intéressant pour faire ce que je souhaite faire : https://pypi.python.org/pypi/python-crontab

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #!/usr/bin/python2.7
    #-*- coding: utf-8 -*-
    
    import json
    from crontab import CronTab
    
    json_data = open("mon_fichier.json", "r")
    data = json.load(json_data)
    
    users_cron = CronTab(user='web1')
    job = users_cron.new(command='sh /path/mon_script.sh > /dev/null', comment='Mon Commentaire')
    job.hour.on(18)
    job.minutes.on(00)
    job.enable()
    
    liste_cron = users_cron.find_comment('Mon Commentaire')
    
    if data.get("activation"):
    	if liste_cron:
    		users_cron.write()
    		print "Tâche CRON créée"
    		#print job.render()
    else:
    	if liste_cron:
    		users_cron.remove_all(comment='Notifications SMS')
    		print "Tâche CRON supprimée"
    
    json_data.close()
    J'ai mis en rouge ce qui me pose problème :
    - Je n'arrive pas à créer la condition qui permette de vérifier si la tâche CRON existe
    - Je n'arrive pas à supprimer la tâche CRON

    Je galère donc pas mal avec ce paquet python-crontab. Merci de votre aide !

  2. #2
    Membre expérimenté Avatar de cervo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 220
    Par défaut

    La reponse a tes 2 questions se trouve ici : https://pypi.python.org/pypi/python-crontab/2.0.1

    tu as des exemples a l'appui

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    La structure de ton code ne me semble pas cohérente. Toutefois, je peux me tromper sur tes intentions.

    Si je devine bien, ton dictionnaire data contient une tâche qui devra être inscrite dans le cron selon la valeur de "activation" (pas sur de bien comprendre) sinon il s'agit d'une tâche à supprimer.

    Donc il faudrait d'abord vérifier cela en premier lieu, alors que dans ton code tu commences par créer la tâche. Si c'est pour la supprimer, ce n'est pas utile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if data.get("activation"):
    	if liste_cron:
    		users_cron.write()
    Ici, si la tâche doit être créée, tu vérifies si elle existe déjà (1) et si oui, tu l'inscris. Si non tu ne la crées pas ?

    Si la tâche existant déjà a une date périmée, doit-elle être remplacée par la nouvelle ?

    En premier lieu si tu pouvais montrer comment est structuré le fichier .json, ça permettrait de mieux comprendre.


    (1) Si je comprend bien users_cron.find_comment('Mon Commentaire') retourne un itérable, prévoyant le cas ou plusieurs tâches auraient le même commentaire.

  4. #4
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Par défaut
    Merci à vous de vous intéresser à mon problème.

    Citation Envoyé par cervo Voir le message

    La reponse a tes 2 questions se trouve ici : https://pypi.python.org/pypi/python-crontab/2.0.1

    tu as des exemples a l'appui
    Oui j'ai bien vu ce lien, je l'ai même indiqué dans ma demande. Mais mon faible niveau de python ne me permet pas de comprendre tous ces exemples...

    Citation Envoyé par VinsS Voir le message
    La structure de ton code ne me semble pas cohérente. Toutefois, je peux me tromper sur tes intentions.
    Oui je pense que la structure de mon code n'est pas cohérente. ^^
    Pour préciser un peu ce que je souhaite faire : j'ai un fichier JSON qui contient ces informations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"activation":true,"date":"2015-12-06","heure":"10:24","ville":"Rennes"}
    Ça ne va pas très loin n'est-ce pas ?
    Ce que je veux faire et ce qui semble tout bête sur le papier c'est :

    // Si l'activation est à True
    // Si la tâche CRON n'existe pas
    // Créer la tâche CRON
    // Sinon
    // Si la tâche CRON existe
    // Supprimer ou commenter la tâche CRON

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Ça me semble clair comme ça.

    Json.load te retourne un dictionnaire où tu accèdes aux valeurs en utilisant les clés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    >>> with open('tasks.json', 'r') as inf:
    ...     tasks = json.load(inf)
    ... 
    >>> tasks
    {u'date': u'2015-12-06', u'ville': u'Rennes', u'activation': True, u'heure': u'10:24'}
    >>> if tasks['activation']:
    ...     print 'créer cron'
    ... 
    créer cron
    >>>
    Là on voit que la tâche doit être activée.

    Mais il n'y a pas de commentaire, donc il faudra un autre moyen pour vérifier si cette entrée n'existe pas déjà.
    Par exemple la date et l'heure.

Discussions similaires

  1. Réponses: 8
    Dernier message: 06/12/2014, 18h39
  2. [VTK] Utilisation avec python
    Par KINENVEU dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 03/10/2009, 22h41
  3. utiliser du python depuis un programme c#
    Par nasbuligator dans le forum C#
    Réponses: 3
    Dernier message: 05/12/2008, 14h18
  4. Utiliser Reverse Python
    Par Harry_Tauper dans le forum BOUML
    Réponses: 2
    Dernier message: 16/07/2008, 13h12
  5. [mod_python] utilisation avec python 2.5
    Par anthyme dans le forum Réseau/Web
    Réponses: 8
    Dernier message: 19/01/2007, 18h41

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