File tree 2 files changed +34
-1
lines changed
2 files changed +34
-1
lines changed Original file line number Diff line number Diff line change @@ -73,6 +73,13 @@ class CancelJob(object):
73
73
pass
74
74
75
75
76
+ class SkipJob (object ):
77
+ """
78
+ Can be returned from a job to skip a run.
79
+ """
80
+ pass
81
+
82
+
76
83
class Scheduler (object ):
77
84
"""
78
85
Objects instantiated by the :class:`Scheduler <Scheduler>` are
@@ -483,7 +490,8 @@ def run(self):
483
490
"""
484
491
logger .info ('Running job %s' , self )
485
492
ret = self .job_func ()
486
- self .last_run = datetime .datetime .now ()
493
+ if not isinstance (ret , SkipJob ) and ret is not SkipJob :
494
+ self .last_run = datetime .datetime .now ()
487
495
self ._schedule_next_run ()
488
496
return ret
489
497
Original file line number Diff line number Diff line change @@ -444,6 +444,31 @@ def stop_job():
444
444
schedule .run_all ()
445
445
assert len (schedule .jobs ) == 0
446
446
447
+ def test_skip_job (self ):
448
+ skip = True
449
+
450
+ def skip_job ():
451
+ if skip :
452
+ return schedule .SkipJob
453
+ else :
454
+ return None
455
+
456
+ job = every ().second .do (skip_job )
457
+
458
+ assert len (schedule .jobs ) == 1
459
+ assert job .last_run is None
460
+
461
+ schedule .run_all ()
462
+
463
+ assert len (schedule .jobs ) == 1
464
+ assert job .last_run is None
465
+
466
+ skip = False
467
+ schedule .run_all ()
468
+
469
+ assert len (schedule .jobs ) == 1
470
+ assert job .last_run is not None
471
+
447
472
def test_tag_type_enforcement (self ):
448
473
job1 = every ().second .do (make_mock_job (name = 'job1' ))
449
474
self .assertRaises (TypeError , job1 .tag , {})
You can’t perform that action at this time.
0 commit comments