2015-08-26 4 views
1

Je travaille sur une tâche de période avec Python apscheduler, je veux que le code s'exécute sur 09h00, 11h00, 16h00 , 17:00 tous les jours et voici un exemple de code pour le travail:Comment régler Python apscheduler exécuter le travail à 9,11,14,17,18 horloge tous les jours

#coding=utf-8 
from apscheduler.schedulers.blocking import BlockingScheduler 
import logging 
logging.basicConfig() 
from time import ctime 

sched = BlockingScheduler() 

@sched.scheduled_job('cron', hour=16) 
def timed_job_one(): 
    print "16" 
    print ctime() 

@sched.scheduled_job('cron', hour=17) 
def timed_job_one(): 
    print "17" 
    print ctime() 

@sched.scheduled_job('cron', hour=9) 
def timed_job_two(): 
    print ctime() 
    print '9' 

@sched.scheduled_job('cron', hour=11) 
def timed_job_two(): 
    print ctime() 
    print '11' 

sched.start() 

Il fonctionne, mais répéter le code à quatre reprises semble stupide, donc mon problème est de savoir comment rendre le code court pour régler la course de fonction à 9h00, 11h00, 16h00, 17h00 tous les jours?

+0

Pour les futurs lecteurs, la réponse correcte est la réponse d'Alex, la réponse actuellement acceptée. –

Répondre

4

Pourquoi voudriez-vous pour planifier le travail quatre fois séparément lorsque la documentation donne des exemples clairs de la façon de le faire correctement?

@sched.scheduled_job('cron', hour='9,11,16,17') 
def timed_job(): 
    print ctime() 

Voir this et this.

2

Quelque chose comme ça?

for h in [9,11,16,17]: 
    @sched.scheduled_job('cron', hour=h) 
    def timed_job_one(): 
     print h 
     print ctime() 

ou avec plusieurs méthodes:

items = [(16,timed_job_one),(17,timed_job_one),(9,timed_job_two),(11,timed_job_two)] 
for h,method in items: 
@sched.scheduled_job('cron', hour=h) 
    def job(): 
     method(h)