Mercurial > piecrust2
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, |