comparison piecrust/baking/worker.py @ 687:61d606fbc313

bake: Change `show-timers` to `show-stats`, add stats.
author Ludovic Chabant <ludovic@chabant.com>
date Mon, 14 Mar 2016 08:26:14 -0700
parents 81d9c3a3a0b5
children f7207f4dab82
comparison
equal deleted inserted replaced
686:1a6c4c2683fd 687:61d606fbc313
39 app.env.base_asset_url_format = '%uri%' 39 app.env.base_asset_url_format = '%uri%'
40 app.env.fs_cache_only_for_main_page = True 40 app.env.fs_cache_only_for_main_page = True
41 app.env.registerTimer("BakeWorker_%d_Total" % self.wid) 41 app.env.registerTimer("BakeWorker_%d_Total" % self.wid)
42 app.env.registerTimer("BakeWorkerInit") 42 app.env.registerTimer("BakeWorkerInit")
43 app.env.registerTimer("JobReceive") 43 app.env.registerTimer("JobReceive")
44 app.env.registerManifest("LoadJobs")
45 app.env.registerManifest("RenderJobs")
46 app.env.registerManifest("BakeJobs")
44 self.ctx.app = app 47 self.ctx.app = app
45 48
46 # Load previous record 49 # Load previous record
47 if self.ctx.previous_record_path: 50 if self.ctx.previous_record_path:
48 self.ctx.previous_record = BakeRecord.load( 51 self.ctx.previous_record = BakeRecord.load(
69 return handler.handleJob(job['job']) 72 return handler.handleJob(job['job'])
70 73
71 def getReport(self): 74 def getReport(self):
72 self.ctx.app.env.stepTimerSince("BakeWorker_%d_Total" % self.wid, 75 self.ctx.app.env.stepTimerSince("BakeWorker_%d_Total" % self.wid,
73 self.work_start_time) 76 self.work_start_time)
77 data = self.ctx.app.env.getStats()
74 return { 78 return {
75 'type': 'timers', 79 'type': 'stats',
76 'data': self.ctx.app.env._timers} 80 'data': data}
77 81
78 82
79 JOB_LOAD, JOB_RENDER_FIRST, JOB_BAKE = range(0, 3) 83 JOB_LOAD, JOB_RENDER_FIRST, JOB_BAKE = range(0, 3)
80 84
81 85
114 class LoadJobHandler(JobHandler): 118 class LoadJobHandler(JobHandler):
115 def handleJob(self, job): 119 def handleJob(self, job):
116 # Just make sure the page has been cached. 120 # Just make sure the page has been cached.
117 fac = load_factory(self.app, job) 121 fac = load_factory(self.app, job)
118 logger.debug("Loading page: %s" % fac.ref_spec) 122 logger.debug("Loading page: %s" % fac.ref_spec)
123 self.app.env.addManifestEntry('LoadJobs', fac.ref_spec)
119 result = { 124 result = {
120 'source_name': fac.source.name, 125 'source_name': fac.source.name,
121 'path': fac.path, 126 'path': fac.path,
122 'config': None, 127 'config': None,
123 'errors': None} 128 'errors': None}
135 140
136 class RenderFirstSubJobHandler(JobHandler): 141 class RenderFirstSubJobHandler(JobHandler):
137 def handleJob(self, job): 142 def handleJob(self, job):
138 # Render the segments for the first sub-page of this page. 143 # Render the segments for the first sub-page of this page.
139 fac = load_factory(self.app, job) 144 fac = load_factory(self.app, job)
145 self.app.env.addManifestEntry('RenderJobs', fac.ref_spec)
140 146
141 # These things should be OK as they're checked upstream by the baker. 147 # These things should be OK as they're checked upstream by the baker.
142 route = self.app.getRoute(fac.source.name, fac.metadata, 148 route = self.app.getRoute(fac.source.name, fac.metadata,
143 skip_taxonomies=True) 149 skip_taxonomies=True)
144 assert route is not None 150 assert route is not None
175 self.page_baker = PageBaker(ctx.app, ctx.out_dir, ctx.force) 181 self.page_baker = PageBaker(ctx.app, ctx.out_dir, ctx.force)
176 182
177 def handleJob(self, job): 183 def handleJob(self, job):
178 # Actually bake the page and all its sub-pages to the output folder. 184 # Actually bake the page and all its sub-pages to the output folder.
179 fac = load_factory(self.app, job['factory_info']) 185 fac = load_factory(self.app, job['factory_info'])
186 self.app.env.addManifestEntry('BakeJobs', fac.ref_spec)
180 187
181 route_metadata = job['route_metadata'] 188 route_metadata = job['route_metadata']
182 tax_info = job['taxonomy_info'] 189 tax_info = job['taxonomy_info']
183 if tax_info is not None: 190 if tax_info is not None:
184 route = self.app.getTaxonomyRoute(tax_info.taxonomy_name, 191 route = self.app.getTaxonomyRoute(tax_info.taxonomy_name,