[Python-es] Duda: Cual sería el orden de ejecución de eventos
Chema Cortes
py en ch3m4.org
Sab Oct 16 03:13:38 CEST 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
El 13/10/10 13:05, tny escribió:
> Permito que se registren callbacks para los eventos tanto en las
> instancias de Proccesses como en las de Controller
> Los callbacks registrados en Controller sólo se lanzan cuando el evento
> se produce en el proceso asociado a dicho controller.
> Los callbacks registrados en Proccesses se lanzan cuando el evento se
> produce en cualquier Controller.
>
> ¿Cual sería el comportamiento deseable?
> 1. Que primero se lancen todos los callbacks de todos los enventos
> registrados en los controllers, y luego todos los de Proccesses
> 2. Que primero se lancen todos los callbacks de todos los controllers y
> luego todos los de proccesses
> 3. Que para cada evento se lance primero en proccesses y luego en
> controllers
> 4. Que para cada evento se lance primero en controllers y luego en
> proccesses
> 5. Que un evento no se lance en Processes si está también registrado en
> controllers
> 6. Dejar de algún modo que el desarrollador que use el módulo escoja.
>
> El caso nº 6 podría complicar bastante la forma de usar el módulo, sobre
> manera si se da la opción de escoger entre todas las posibilidades.
>
> Actualmente lo tengo implementado de forma 1, pero estoy dudando en
> hacerlo de la forma 4.
Si entiendo bien, buscas un modo de desacoplar el lugar donde se produce
el evento del que lo procesa.
Lo normal es crear una "cadena de mando" por donde avanzan los eventos
hasta que alguien los procese y "consuma". Con esto quiero decir que los
"callbacks" deberían devolver un valor indicando si han consumido o no
el evento, ejecutando primero los callbacks de los controllers para
luego ascender a los proccesses que ejecutarían la acción por defecto.
Esta cadena se pararía allí donde se "consuma" el evento, o bien al
llegar al final.
En cuanto a la opción contraria, "comando", la comunicación desde padre
a hijos, podrías también considerar la opción de "multidifusión", o sea,
poder lanzar un comando a todas las instancias de un controller.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iQEcBAEBAgAGBQJMuPw8AAoJEFdWyBWwhL4FW2IIAIt8Ho7jDPa/S/a7ybonxqp2
q4nF8pY9wTBMFM5rIpfGWNcFSni6J9TmQ2gEV30V3tV6jBHjBCYQOloPTIH8o117
VgsHA6Dx4Xc58Ep1ODLlFn64DyLWXqKa58cf6KEKjKu7OLxAWEujAGxSDlhPlPk4
8EroftLagDIh9T+2ZvMf2gbjAGFm8/ZSQsApBCN0OaUxsbK2vzjWKULhKNUunM/p
I5ONZDMlSHRsyH2s/arNeqipEXcK351tcXMNZBQw60Rg1cmrUFLzqhnPplz1I+6/
ci81L/xlK6rHZLIu7z8nHIYxJlQcC6N7D+G7Qxd1O36TgZEF650qguxMBoYvyAU=
=uohz
-----END PGP SIGNATURE-----
Más información sobre la lista de distribución Python-es