[Plone-IT] Re: Z3CForm e collective.lead (sqlalchemy) impossibile splittare le classi in piu' file.

Simone Deponti shywolf9982 a gmail.com
Gio 10 Dic 2009 01:39:52 UTC


On Wed, 9 Dec 2009 12:36:06 +0100
Gianni Cozzolongo <gianniftp a gmail.com>
wrote:


Ciao,

> 
> e' necessario creare un istanza dell'utility ogni volta che si vuole
> accedere al db?
> 

La risposta breve: no.

La risposta lunga:

non ne sono sicuro al 100% perché non mi sto a spulciare gli internals
di Z3 ogni giorno, ma il codice:

fancy_utility = getUtility(IFancy, u"fancyutility")

non è detto che crei sempre l'utility: diciamo, semplificando davvero
molto, che zope si tiene le chiamate a getUtility in cache e se hai già
chiamato getUtility con quei parametri ti ritorna direttamente l'istanza
dell'utility senza __call__are il factory di nuovo.
Detto ciò, io non farei però conto sul fatto che quell'istanza sia un
singleton, difatti se non ricordo male questa "specie di cache" del
component registry è threadlocal.
In sostanza è molto difficile sapere se è un'istanza "nuova" o
"vecchia" ma il fatto è che, per quanto riguarda le utility, non
dovrebbe importartene a livello di logica.

Per quanto riguarda le prestazioni beh, non ti devi preoccupare perché
ci ha già pensato Z3 ;)

Riassumendo, consiglio di fare i getUtility sempre all'interno di un
metodo: nell'__init__ se viene usata in più metodi o direttamente nel
metodo (senza agganciarla al self) se va usata solo in quello.
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        signature.asc
Tipo:        application/pgp-signature
Dimensione:  198 bytes
Descrizione: non disponibile
URL:         <http://lists.plone.org/pipermail/plone-plone-it/attachments/20091210/055c3ec3/attachment.asc>


Maggiori informazioni sulla lista Plone-IT