1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
__all__ = (
"EVENT_SCHEDULER_STARTED",
"EVENT_SCHEDULER_SHUTDOWN",
"EVENT_SCHEDULER_PAUSED",
"EVENT_SCHEDULER_RESUMED",
"EVENT_EXECUTOR_ADDED",
"EVENT_EXECUTOR_REMOVED",
"EVENT_JOBSTORE_ADDED",
"EVENT_JOBSTORE_REMOVED",
"EVENT_ALL_JOBS_REMOVED",
"EVENT_JOB_ADDED",
"EVENT_JOB_REMOVED",
"EVENT_JOB_MODIFIED",
"EVENT_JOB_EXECUTED",
"EVENT_JOB_ERROR",
"EVENT_JOB_MISSED",
"EVENT_JOB_SUBMITTED",
"EVENT_JOB_MAX_INSTANCES",
"EVENT_ALL",
"SchedulerEvent",
"JobEvent",
"JobExecutionEvent",
"JobSubmissionEvent",
)
EVENT_SCHEDULER_STARTED = EVENT_SCHEDULER_START = 2**0
EVENT_SCHEDULER_SHUTDOWN = 2**1
EVENT_SCHEDULER_PAUSED = 2**2
EVENT_SCHEDULER_RESUMED = 2**3
EVENT_EXECUTOR_ADDED = 2**4
EVENT_EXECUTOR_REMOVED = 2**5
EVENT_JOBSTORE_ADDED = 2**6
EVENT_JOBSTORE_REMOVED = 2**7
EVENT_ALL_JOBS_REMOVED = 2**8
EVENT_JOB_ADDED = 2**9
EVENT_JOB_REMOVED = 2**10
EVENT_JOB_MODIFIED = 2**11
EVENT_JOB_EXECUTED = 2**12
EVENT_JOB_ERROR = 2**13
EVENT_JOB_MISSED = 2**14
EVENT_JOB_SUBMITTED = 2**15
EVENT_JOB_MAX_INSTANCES = 2**16
EVENT_ALL = (
EVENT_SCHEDULER_STARTED
| EVENT_SCHEDULER_SHUTDOWN
| EVENT_SCHEDULER_PAUSED
| EVENT_SCHEDULER_RESUMED
| EVENT_EXECUTOR_ADDED
| EVENT_EXECUTOR_REMOVED
| EVENT_JOBSTORE_ADDED
| EVENT_JOBSTORE_REMOVED
| EVENT_ALL_JOBS_REMOVED
| EVENT_JOB_ADDED
| EVENT_JOB_REMOVED
| EVENT_JOB_MODIFIED
| EVENT_JOB_EXECUTED
| EVENT_JOB_ERROR
| EVENT_JOB_MISSED
| EVENT_JOB_SUBMITTED
| EVENT_JOB_MAX_INSTANCES
)
class SchedulerEvent:
"""
An event that concerns the scheduler itself.
:ivar code: the type code of this event
:ivar alias: alias of the job store or executor that was added or removed (if applicable)
"""
def __init__(self, code, alias=None):
super().__init__()
self.code = code
self.alias = alias
def __repr__(self):
return "<%s (code=%d)>" % (self.__class__.__name__, self.code)
class JobEvent(SchedulerEvent):
"""
An event that concerns a job.
:ivar code: the type code of this event
:ivar job_id: identifier of the job in question
:ivar jobstore: alias of the job store containing the job in question
"""
def __init__(self, code, job_id, jobstore):
super().__init__(code)
self.code = code
self.job_id = job_id
self.jobstore = jobstore
class JobSubmissionEvent(JobEvent):
"""
An event that concerns the submission of a job to its executor.
:ivar scheduled_run_times: a list of datetimes when the job was intended to run
"""
def __init__(self, code, job_id, jobstore, scheduled_run_times):
super().__init__(code, job_id, jobstore)
self.scheduled_run_times = scheduled_run_times
class JobExecutionEvent(JobEvent):
"""
An event that concerns the running of a job within its executor.
:ivar scheduled_run_time: the time when the job was scheduled to be run
:ivar retval: the return value of the successfully executed job
:ivar exception: the exception raised by the job
:ivar traceback: a formatted traceback for the exception
"""
def __init__(
self,
code,
job_id,
jobstore,
scheduled_run_time,
retval=None,
exception=None,
traceback=None,
):
super().__init__(code, job_id, jobstore)
self.scheduled_run_time = scheduled_run_time
self.retval = retval
self.exception = exception
self.traceback = traceback
|