comparison piecrust/plugins/base.py @ 803:bf9f4e55f751

rendering: Separate performance timers for renering segments and layouts.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 29 Sep 2016 21:59:20 -0700
parents ab5c6a8ae90a
children 7d83b9484b98
comparison
equal deleted inserted replaced
802:0da1207472d3 803:bf9f4e55f751
61 order_key=lambda f: f.priority) 61 order_key=lambda f: f.priority)
62 62
63 def getTemplateEngines(self): 63 def getTemplateEngines(self):
64 return self._getPluginComponents( 64 return self._getPluginComponents(
65 'getTemplateEngines', 65 'getTemplateEngines',
66 initialize=True, register_timer=True) 66 initialize=True, register_timer=True,
67 register_timer_suffixes=['_segment', '_layout'])
67 68
68 def getDataProviders(self): 69 def getDataProviders(self):
69 return self._getPluginComponents('getDataProviders') 70 return self._getPluginComponents('getDataProviders')
70 71
71 def getProcessors(self): 72 def getProcessors(self):
133 return 134 return
134 135
135 return plugin 136 return plugin
136 137
137 def _getPluginComponents(self, name, *, 138 def _getPluginComponents(self, name, *,
138 initialize=False, register_timer=False, 139 initialize=False,
140 register_timer=False,
141 register_timer_suffixes=None,
139 order_key=None): 142 order_key=None):
140 if name in self._componentCache: 143 if name in self._componentCache:
141 return self._componentCache[name] 144 return self._componentCache[name]
142 145
143 all_components = [] 146 all_components = []
149 for comp in plugin_components: 152 for comp in plugin_components:
150 comp.initialize(self.app) 153 comp.initialize(self.app)
151 154
152 if register_timer: 155 if register_timer:
153 for comp in plugin_components: 156 for comp in plugin_components:
154 self.app.env.registerTimer(comp.__class__.__name__) 157 if not register_timer_suffixes:
158 self.app.env.registerTimer(comp.__class__.__name__)
159 else:
160 for s in register_timer_suffixes:
161 self.app.env.registerTimer(
162 comp.__class__.__name__ + s)
155 163
156 if order_key is not None: 164 if order_key is not None:
157 all_components.sort(key=order_key) 165 all_components.sort(key=order_key)
158 166
159 self._componentCache[name] = all_components 167 self._componentCache[name] = all_components