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,