2017-09-27 15 views
2

J'utilise le module Advanced Python Scheduler dans mes scripts pour planifier un travail pour chaque dernier jour du mois. Je cours ce manuscrit de python en tant que systemd manuscrit dans la machine de CentOS.Liste des tâches cron planifiées par apscheduler

from apscheduler.schedulers.blocking import BlockingScheduler 

if __name__ == '__main__': 
    sched = BlockingScheduler() 
    sched.add_job(lambda: my_aggregation_function(url_list, 'monthly'), 'cron', day='last') 
    while True: 
     sched.start() 

Je redémarrés mon script (systemd) en ajoutant ces modifications et le script est en cours d'exécution avec maintenant la tâche planifiée.

Ma question est comment puis-je confirmer si le travail est programmé à partir de mon script python pour être exécuté comme je l'ai configuré. J'ai fait une liste de cron comme ci-dessous, mais je n'ai trouvé aucune annonce prévue.

crontab -u root -l 

également pour un travail de test sur shell interactif,

# python 
Python 2.7.5 (default, Nov 6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from apscheduler.schedulers.blocking import BlockingScheduler 
>>> sched = BlockingScheduler() 
>>> def job_function(): 
...  print "Hello World" 
... 
>>> sched.add_job(job_function, 'cron', day='last') 
<Job (id=c4b232a453dd4b5dbea5ef413d7a8c4d name=job_function)> 
>>> sched.start() 

Comment puis-je voir les détails de l'ID du travail (c4b232a453dd4b5dbea5ef413d7a8c4d) mentionné? Est-il possible de regarder de cette façon. J'ai également recherché un autre module python-crontab pour gérer cron emplois. Cela n'a pas non plus énuméré les emplois

>>> from crontab import CronTab 
>>> my_cron = CronTab(user='root') 
>>> for job in my_cron: 
...  print job 
... 

Répondre

1

Je pense qu'il y a un grave malentendu ici. Il semble que vous pensiez que APScheduler gère en quelque sorte les tâches cron du système. Ce n'est pas. C'est un planificateur en cours de processus qui a juste un déclencheur semblable à un cron pour planifier les tâches. APScheduler n'a aucun lien avec un démon cron ou crontabs.

Mise à jour de la réponse actuelle à partir des commentaires. L'API est définie dans la documentation officielle apscheduler

scheduler.get_jobs() 
+0

Appréciez votre réponse (étant l'auteur du module je suppose). J'ai confirmé votre opinion sur le fait que le module n'a rien à faire avec le démon 'cron' que fournit Linux. Mais en ne prenant que la perspective 'apscheduler', n'est-il pas possible de lister les jobs planifiés? – Inian

+0

Bien sûr, il est, en utilisant [scheduler.get_jobs()] (http://apscheduler.readthedocs.io/en/latest/modules/schedulers/base.html#apscheduler.schedulers.base.BaseScheduler.get_jobs) –

+0

Ah! Un simple! Je ne sais pas comment j'ai manqué cela dans la documentation. – Inian