Mercurial > piecrust2
comparison piecrust/baking/baker.py @ 691:9ae9390192da
bake: Use standard pickle and queue for now to fix some small issues.
* JSON leads to some problems with integers as keys.
* Add some stats to the baking process.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 21 Mar 2016 22:28:57 -0700 |
parents | 61d606fbc313 |
children | 5f552aedd918 |
comparison
equal
deleted
inserted
replaced
690:f7207f4dab82 | 691:9ae9390192da |
---|---|
189 | 189 |
190 def _bakeRealm(self, record, pool, realm, srclist): | 190 def _bakeRealm(self, record, pool, realm, srclist): |
191 start_time = time.perf_counter() | 191 start_time = time.perf_counter() |
192 try: | 192 try: |
193 record.current.baked_count[realm] = 0 | 193 record.current.baked_count[realm] = 0 |
194 record.current.total_baked_count[realm] = 0 | |
194 | 195 |
195 all_factories = [] | 196 all_factories = [] |
196 for source in srclist: | 197 for source in srclist: |
197 factories = source.getPageFactories() | 198 factories = source.getPageFactories() |
198 all_factories += [f for f in factories | 199 all_factories += [f for f in factories |
201 self._loadRealmPages(record, pool, all_factories) | 202 self._loadRealmPages(record, pool, all_factories) |
202 self._renderRealmPages(record, pool, all_factories) | 203 self._renderRealmPages(record, pool, all_factories) |
203 self._bakeRealmPages(record, pool, realm, all_factories) | 204 self._bakeRealmPages(record, pool, realm, all_factories) |
204 finally: | 205 finally: |
205 page_count = record.current.baked_count[realm] | 206 page_count = record.current.baked_count[realm] |
207 total_page_count = record.current.total_baked_count[realm] | |
206 logger.info(format_timed( | 208 logger.info(format_timed( |
207 start_time, | 209 start_time, |
208 "baked %d %s pages." % | 210 "baked %d %s pages (%d total)." % |
209 (page_count, REALM_NAMES[realm].lower()))) | 211 (page_count, REALM_NAMES[realm].lower(), |
212 total_page_count))) | |
210 | 213 |
211 def _loadRealmPages(self, record, pool, factories): | 214 def _loadRealmPages(self, record, pool, factories): |
212 def _handler(res): | 215 def _handler(res): |
213 # Create the record entry for this page. | 216 # Create the record entry for this page. |
214 # This will also update the `dirty_source_names` for the record | 217 # This will also update the `dirty_source_names` for the record |
295 self._logErrors(res['path'], res['errors']) | 298 self._logErrors(res['path'], res['errors']) |
296 if entry.has_any_error: | 299 if entry.has_any_error: |
297 record.current.success = False | 300 record.current.success = False |
298 if entry.subs and entry.was_any_sub_baked: | 301 if entry.subs and entry.was_any_sub_baked: |
299 record.current.baked_count[realm] += 1 | 302 record.current.baked_count[realm] += 1 |
303 record.current.total_baked_count[realm] += len(entry.subs) | |
300 | 304 |
301 logger.debug("Baking %d realm pages..." % len(factories)) | 305 logger.debug("Baking %d realm pages..." % len(factories)) |
302 with format_timed_scope(logger, | 306 with format_timed_scope(logger, |
303 "baked %d pages" % len(factories), | 307 "baked %d pages" % len(factories), |
304 level=logging.DEBUG, colored=False, | 308 level=logging.DEBUG, colored=False, |