2017-10-09 32 views
1

J'ai un Cron que je l'ai écrit en utilisant django-Cron:Comment planifier django crons?

from django_cron import CronJobBase, Schedule 

class MyCronJob(CronJobBase): 
    RUN_EVERY_MINS = 1 

    schedule = Schedule(run_every_mins=RUN_EVERY_MINS) 
    code = 'statuscheck.my_cron_job' 

    def do(self): 
     print ("hello") 

Il fonctionne, comme lorsque la commande python manage.py runcrons est exécutée deux fois de suite, une seule sortie est fournie à moins que la 1 minute est écoulée

Ma question est, comment puis-je planifier cette commande pour être exécuté par exemple 3 fois par semaine?

Merci

Répondre

1

il suffit de changer le nombre de minutes, étant donné il y a 60 minutes dans une heure, 24 heures par jour et 7 jours par semaine, vous pouvez faire quelque chose comme:

RUN_EVERY_MINS = 60 * 24 * 7/3 # three times a week 

A propos du problème mentionné dans votre commentaire, je pense que vous devriez utiliser CRON.

https://en.wikipedia.org/wiki/Cron

Vous pouvez ajouter cette ligne dans /etc/crontab (remplacez /path/to par chemin réel):

* * * * * cd /path/to/manage.py && /usr/bin/python manage.py runcrons 

Cela exécutera votre script chaque minute.

Notez que vous ne verrez pas "bonjour" sur la session de votre terminal. Si vous voulez voir la sortie de CRON vous pouvez rediriger vers un fichier:

* * * * * cd /path/to/manage.py && /usr/bin/python manage.py runcrons >> /tmp/django_cron.log 
+1

Salut @ Loïc, merci d'avoir pris le temps de répondre :) Quand je lance le Cron, il exécute une seule fois, il n » t exécuter chaque minute. Ce que l'application exécute actuellement s'exécute une fois et si j'essaie d'exécuter à nouveau la même commande, elle ne fonctionne pas à moins qu'une minute se soit écoulée - ai-je besoin d'un autre programme de planification pour exécuter mes runcrons python manage.py? – theMicroGirl

+0

Bonjour @theMicroGirl J'ai modifié ma réponse pour répondre à votre commentaire. –

+0

merci je vais essayer maintenant :) x – theMicroGirl