comparison piecrust/baking/worker.py @ 900:bf65a1a6992a

bake: Add performance timers for pipeline jobs.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 23 Jul 2017 08:21:07 -0700
parents d1095774bfcf
children 8adc27285d93
comparison
equal deleted inserted replaced
899:e52e2dd08c96 900:bf65a1a6992a
42 app.env.fs_cache_only_for_main_page = True 42 app.env.fs_cache_only_for_main_page = True
43 43
44 stats = app.env.stats 44 stats = app.env.stats
45 stats.registerTimer("BakeWorker_%d_Total" % self.wid) 45 stats.registerTimer("BakeWorker_%d_Total" % self.wid)
46 stats.registerTimer("BakeWorkerInit") 46 stats.registerTimer("BakeWorkerInit")
47 self.timerScope = stats.timerScope
47 48
48 self.app = app 49 self.app = app
49 50
50 # Load previous record 51 # Load previous record
51 if self.ctx.previous_records_path: 52 if self.ctx.previous_records_path:
69 if nok_pp is not None and pname in nok_pp: 70 if nok_pp is not None and pname in nok_pp:
70 continue 71 continue
71 72
72 self.ppmngr.createPipeline(src) 73 self.ppmngr.createPipeline(src)
73 74
75 stats.registerTimer("PipelineJobs_%s" % pname,
76 raise_if_registered=False)
77
74 stats.stepTimerSince("BakeWorkerInit", self._work_start_time) 78 stats.stepTimerSince("BakeWorkerInit", self._work_start_time)
75 79
76 def process(self, job): 80 def process(self, job):
77 item = job.content_item 81 item = job.content_item
78 logger.debug("Received job: %s@%s" % (job.source_name, item.spec)) 82 logger.debug("Received job: %s@%s" % (job.source_name, item.spec))
79 83
80 ppinfo = self.ppmngr.getPipeline(job.source_name) 84 ppinfo = self.ppmngr.getPipeline(job.source_name)
81 pp = ppinfo.pipeline 85 pp = ppinfo.pipeline
82 86
83 runctx = PipelineJobRunContext(job, pp.record_name, 87 with self.timerScope("PipelineJobs_%s" % pp.PIPELINE_NAME):
84 self.record_histories) 88 runctx = PipelineJobRunContext(job, pp.record_name,
89 self.record_histories)
85 90
86 ppres = PipelineJobResult() 91 ppres = PipelineJobResult()
87 # For subsequent pass jobs, there will be a record entry given. For 92 # For subsequent pass jobs, there will be a record entry given.
88 # first pass jobs, there's none so we get the pipeline to create it. 93 # For first pass jobs, there's none so we get the pipeline to
89 ppres.record_entry = job.data.get('record_entry') 94 # create it.
90 if ppres.record_entry is None: 95 ppres.record_entry = job.data.get('record_entry')
91 ppres.record_entry = pp.createRecordEntry(job, runctx) 96 if ppres.record_entry is None:
92 pp.run(job, runctx, ppres) 97 ppres.record_entry = pp.createRecordEntry(job, runctx)
98 pp.run(job, runctx, ppres)
99
93 return ppres 100 return ppres
94 101
95 def getStats(self): 102 def getStats(self):
96 stats = self.app.env.stats 103 stats = self.app.env.stats
97 stats.stepTimerSince("BakeWorker_%d_Total" % self.wid, 104 stats.stepTimerSince("BakeWorker_%d_Total" % self.wid,