4
4
"""
5
5
6
6
import datetime
7
+ from datetime import timezone as tz
7
8
import functools
8
9
import multiprocessing
9
10
import os
@@ -99,7 +100,7 @@ def with_all_upstreams(nodes: {pipelines.Node}):
99
100
queue ([pipeline ])
100
101
101
102
# book keeping
102
- run_start_time = datetime .datetime .now ()
103
+ run_start_time = datetime .datetime .now (tz . utc )
103
104
# all nodes that already ran or that won't be run anymore
104
105
processed_nodes : {pipelines .Node } = set ()
105
106
# running pipelines with start times and number of running children
@@ -134,10 +135,10 @@ def track_finished_pipelines():
134
135
succeeded = running_pipeline not in failed_pipelines
135
136
event_queue .put (pipeline_events .Output (
136
137
node_path = running_pipeline .path (), format = logger .Format .ITALICS , is_error = not succeeded ,
137
- message = f'{ "succeeded" if succeeded else "failed" } , { logger .format_time_difference (run_start_time , datetime .datetime .now ())} ' ))
138
+ message = f'{ "succeeded" if succeeded else "failed" } , { logger .format_time_difference (run_start_time , datetime .datetime .now (tz . utc ))} ' ))
138
139
event_queue .put (pipeline_events .NodeFinished (
139
140
node_path = running_pipeline .path (), start_time = start_time ,
140
- end_time = datetime .datetime .now (), is_pipeline = True , succeeded = succeeded ))
141
+ end_time = datetime .datetime .now (tz . utc ), is_pipeline = True , succeeded = succeeded ))
141
142
del running_pipelines [running_pipeline ]
142
143
processed_nodes .add (running_pipeline )
143
144
@@ -180,7 +181,7 @@ def track_finished_pipelines():
180
181
queue (list (next_node .nodes .values ()))
181
182
182
183
# book keeping and event emission
183
- pipeline_start_time = datetime .datetime .now ()
184
+ pipeline_start_time = datetime .datetime .now (tz . utc )
184
185
running_pipelines [next_node ] = [pipeline_start_time , 0 ]
185
186
event_queue .put (pipeline_events .NodeStarted (next_node .path (), pipeline_start_time , True ))
186
187
event_queue .put (pipeline_events .Output (
@@ -190,7 +191,7 @@ def track_finished_pipelines():
190
191
191
192
elif isinstance (next_node , pipelines .ParallelTask ):
192
193
# create sub tasks and queue them
193
- task_start_time = datetime .datetime .now ()
194
+ task_start_time = datetime .datetime .now (tz . utc )
194
195
try :
195
196
logger .redirect_output (event_queue , next_node .path ())
196
197
logger .log ('☆ Launching tasks' , format = logger .Format .ITALICS )
@@ -207,7 +208,7 @@ def track_finished_pipelines():
207
208
format = pipeline_events .Output .Format .VERBATIM , is_error = True )
208
209
event_queue .put (pipeline_events .NodeFinished (
209
210
node_path = next_node .path (), start_time = task_start_time ,
210
- end_time = datetime .datetime .now (), is_pipeline = True , succeeded = False ))
211
+ end_time = datetime .datetime .now (tz . utc ), is_pipeline = True , succeeded = False ))
211
212
212
213
failed_pipelines .add (next_node .parent )
213
214
processed_nodes .add (next_node )
@@ -219,7 +220,7 @@ def track_finished_pipelines():
219
220
if next_node .parent in running_pipelines :
220
221
running_pipelines [next_node .parent ][1 ] += 1
221
222
event_queue .put (
222
- pipeline_events .NodeStarted (next_node .path (), datetime .datetime .now (), False ))
223
+ pipeline_events .NodeStarted (next_node .path (), datetime .datetime .now (tz . utc ), False ))
223
224
event_queue .put (pipeline_events .Output (
224
225
node_path = next_node .path (), format = logger .Format .ITALICS ,
225
226
message = '★ ' + node_cost .format_duration (
@@ -246,7 +247,7 @@ def track_finished_pipelines():
246
247
for parent in task_process .task .parents ()[:- 1 ]:
247
248
failed_pipelines .add (parent )
248
249
249
- end_time = datetime .datetime .now ()
250
+ end_time = datetime .datetime .now (tz . utc )
250
251
event_queue .put (
251
252
pipeline_events .Output (task_process .task .path (),
252
253
('succeeded' if succeeded else 'failed' ) + ', '
@@ -273,7 +274,7 @@ def track_finished_pipelines():
273
274
statistics_process .join ()
274
275
275
276
# run finished
276
- event_queue .put (pipeline_events .RunFinished (node_path = pipeline .path (), end_time = datetime .datetime .now (),
277
+ event_queue .put (pipeline_events .RunFinished (node_path = pipeline .path (), end_time = datetime .datetime .now (tz . utc ),
277
278
succeeded = not failed_pipelines ,
278
279
interactively_started = interactively_started ))
279
280
@@ -326,7 +327,7 @@ def __init__(self, task: pipelines.Task, event_queue: multiprocessing.Queue, sta
326
327
self .task = task
327
328
self .event_queue = event_queue
328
329
self .status_queue = status_queue
329
- self .start_time = datetime .datetime .now ()
330
+ self .start_time = datetime .datetime .now (tz . utc )
330
331
331
332
def run (self ):
332
333
# redirect stdout and stderr to queue
0 commit comments