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
...
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
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) –
Ah! Un simple! Je ne sais pas comment j'ai manqué cela dans la documentation. – Inian