Mercurial > piecrust2
changeset 1019:bd544b65cfad
bake: More detailed stats, and fix a problem with some error reporting.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 29 Nov 2017 21:36:11 -0800 |
parents | 3c6e6e7b9639 |
children | 298b07a899b5 |
files | piecrust/baking/worker.py piecrust/workerpool.py |
diffstat | 2 files changed, 16 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/baking/worker.py Wed Nov 29 21:35:49 2017 -0800 +++ b/piecrust/baking/worker.py Wed Nov 29 21:36:11 2017 -0800 @@ -43,8 +43,8 @@ app.env.fs_cache_only_for_main_page = True stats = app.env.stats - stats.registerTimer("BakeWorker_%d_Total" % self.wid) - stats.registerTimer("BakeWorkerInit") + stats.registerTimer("Worker_%d_Total" % self.wid) + stats.registerTimer("Worker_%d_Init" % self.wid) self.app = app self.stats = stats @@ -74,7 +74,8 @@ stats.registerTimer("PipelineJobs_%s" % pname, raise_if_registered=False) - stats.stepTimerSince("BakeWorkerInit", self._work_start_time) + stats.stepTimerSince( + "Worker_%d_Init" % self.wid, self._work_start_time) def process(self, job): source_name, item_spec = job['job_spec'] @@ -98,7 +99,7 @@ def getStats(self): stats = self.app.env.stats - stats.stepTimerSince("BakeWorker_%d_Total" % self.wid, + stats.stepTimerSince("Worker_%d_Total" % self.wid, self._work_start_time) return stats
--- a/piecrust/workerpool.py Wed Nov 29 21:35:49 2017 -0800 +++ b/piecrust/workerpool.py Wed Nov 29 21:36:11 2017 -0800 @@ -158,13 +158,17 @@ completed = 0 time_in_get = 0 time_in_put = 0 + is_first_get = True get = params.inqueue.get put = params.outqueue.put while True: get_start_time = time.perf_counter() task = get() - time_in_get += (time.perf_counter() - get_start_time) + if not is_first_get: + time_in_get += (time.perf_counter() - get_start_time) + else: + is_first_get = False task_type, task_data = task @@ -185,8 +189,7 @@ logger.debug( "Error processing job, sending exception to main process:") logger.debug(traceback.format_exc()) - we = _get_worker_exception_data(wid) - error_res = (td, we, False) + error_res = _get_worker_exception_data(wid) result_list.append((td, error_res, False)) res = (task_type, wid, result_list) @@ -199,8 +202,10 @@ # End task... gather stats to send back to the main process. elif task_type == TASK_END: logger.debug("Worker %d got end task, exiting." % wid) - stats.registerTimer('WorkerTaskGet', time=time_in_get) - stats.registerTimer('WorkerResultPut', time=time_in_put) + stats.registerTimer('Worker_%d_TaskGet' % wid, time=time_in_get) + stats.registerTimer('Worker_all_TaskGet', time=time_in_get) + stats.registerTimer('Worker_%d_ResultPut' % wid, time=time_in_put) + stats.registerTimer('Worker_all_ResultPut', time=time_in_put) try: stats.mergeStats(w.getStats()) stats_data = stats.toData() @@ -490,7 +495,7 @@ self._event.set() def _handleError(self, job, res, _): - logger.error("Worker %d failed to send its report." % res.wid) + logger.error("Worker %d failed to send its report." % res[0]) logger.error(res)