[Python-es] Duda: Cual sería el orden de ejecución de eventos

tny a.porrua en gmail.com
Mie Oct 13 13:05:28 CEST 2010


Estoy casi terminando el módulo para programar fácilmente con procesos.

Tengo una clase Proccesses, que se encarga de hacer el fork y gestionar
todos los procesos hijos.

Hay dos clases Worker y Controller, que se deben derivar.
El Worker contiene el main del proceso
El Controller sirve para la comunicación entre los procesos hijos y el
padre.
Se pueden usar diferentes Worker/Controllers para diferentes hijos.

La comunicación se realiza mediante eventos y comandos (Cuando va en
dirección de un hijo al padre lo llamo eventos, en caso contrario
comando, pero es lo mismo), a través de un socket del tipo af_unix,
envío mensajes entre el padre y los hijos, dichos mensajes son un
diccionario serializado con cPickle, que contiene el keyword del
evento/comando, y todos los datos que le acompañan.

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.

Para la aplicación para la que estoy desarrollando todo esto, es
indiferente un sistema u otro, pues todos los procesos hijos son
iguales, y registraré los eventos sólo en el Proccesses.

Agradezco sugerencias y comentarios.




Más información sobre la lista de distribución Python-es