Mercurial > piecrust2
comparison piecrust/workerpool.py @ 1008:09c3d415d9e5
bake: Make `batch-size` option work again.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 25 Nov 2017 23:01:48 -0800 |
parents | 1857dbd4580f |
children | c4cf3cfe2726 |
comparison
equal
deleted
inserted
replaced
1007:09dc0240f08a | 1008:09c3d415d9e5 |
---|---|
176 | 176 |
177 result_list = [] | 177 result_list = [] |
178 | 178 |
179 for td in task_data_list: | 179 for td in task_data_list: |
180 try: | 180 try: |
181 res = w.process(td) | 181 worker_res = w.process(td) |
182 result_list.append((td, res, True)) | 182 result_list.append((td, worker_res, True)) |
183 except Exception as e: | 183 except Exception as e: |
184 logger.debug( | 184 logger.debug( |
185 "Error processing job, sending exception to main process:") | 185 "Error processing job, sending exception to main process:") |
186 logger.debug(traceback.format_exc()) | 186 logger.debug(traceback.format_exc()) |
187 we = _get_worker_exception_data(wid) | 187 we = _get_worker_exception_data(wid) |
188 res = (td, we, False) | 188 error_res = (td, we, False) |
189 result_list.append((td, res, False)) | 189 result_list.append((td, error_res, False)) |
190 | 190 |
191 res = (task_type, wid, result_list) | 191 res = (task_type, wid, result_list) |
192 put_start_time = time.perf_counter() | 192 put_start_time = time.perf_counter() |
193 put(res) | 193 put(res) |
194 time_in_put += (time.perf_counter() - put_start_time) | 194 time_in_put += (time.perf_counter() - put_start_time) |
382 self._event.set() | 382 self._event.set() |
383 return False | 383 return False |
384 | 384 |
385 return True | 385 return True |
386 | 386 |
387 def _onTaskDone(self): | 387 def _onTaskDone(self, done_count): |
388 with self._lock_jobs_left: | 388 with self._lock_jobs_left: |
389 left = self._jobs_left - 1 | 389 left = self._jobs_left - done_count |
390 self._jobs_left = left | 390 self._jobs_left = left |
391 | 391 |
392 if left == 0: | 392 if left == 0: |
393 self._event.set() | 393 self._event.set() |
394 | 394 |
429 "Worker %d failed to process a job:" % wid) | 429 "Worker %d failed to process a job:" % wid) |
430 logger.error(data) | 430 logger.error(data) |
431 except Exception as ex: | 431 except Exception as ex: |
432 logger.exception(ex) | 432 logger.exception(ex) |
433 | 433 |
434 if task_type == TASK_JOB: | 434 if task_type == TASK_JOB or task_type == TASK_JOB_BATCH: |
435 pool._onTaskDone() | 435 pool._onTaskDone(len(res_data_list)) |
436 | 436 |
437 | 437 |
438 class _ReportHandler: | 438 class _ReportHandler: |
439 def __init__(self, worker_count): | 439 def __init__(self, worker_count): |
440 self.reports = [None] * worker_count | 440 self.reports = [None] * worker_count |