[Python] Reload di (parti di) un modulo in ipython

Manlio Perillo manlio.perillo a gmail.com
Mer 3 Ott 2012 20:39:51 CEST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Il 03/10/2012 13:24, Daniele Varrazzo ha scritto:
> On 2012-10-03 11:57, Pietro Battiston wrote:
> 
>> Ci ho provato in un po' di modi (es. dopo il reload
>> istanza.__class__.metodo = mio_modulo.Classe.metodo ), ed ho ottenuto un
>> po' di cose comiche tipo:
>>
>> "TypeError: unbound method visita_art() must be called with Visiter
>> instance as first argument (got Visiter instance instead)"
> 
> Questo funziona:
> 
>     istanza.__class__ = mio_modulo.Classe
> 
> Lo uso per fare il reload live del codice in un server web con uno stato
> enorme e che in certi momenti non puņ permettersi di perdere i secondi
> necessari a riavviarsi.
> 
> Ovviamente non funziona con tutto, per esempio se col nuovo codice
> cambia lo stato delle istanze. Ma quando č solo il codice a cambiare,
> funziona come si deve.
> 

Invece di fare queste cose abbastanza dubbie, meglio affidarsi al
sistema operativo.
Nginx, ad esempio, ha un processo master + N workers.
Se devi fare il reload live del codice, ti basta far partire N nuovi
workers e killare i vecchi workers, dopo che hanno finito di servire le
connessioni attive.



Ciao  Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlBshncACgkQscQJ24LbaUQAqgCgmZ1FHqbr2uXk12fqTSFeCXdT
9b0AnRJGsh2v/WH8xBW2tZlVW0cx6Ex+
=FtNx
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python