[pyar] Se busca: Backport de modulo de multiprocessing de py3k a 2.7

Andres Riancho andres.riancho en gmail.com
Vie Ene 30 09:40:03 ART 2015


Claro, eso requiere que el usuario se instale rabbitmq. Para un
software en un server puede andar, pero para algo que corre en una
workstation... no lo veo.

2015-01-30 9:36 GMT-03:00 Javier <javiermarcon en gmail.com>:
> Yo implementaria un sistema de mensajetria entre procesos usando rabbitmq, pero eso puede ser demasiado pesado.
>
> Enviado desde mi telefono
>
> -----Original Message-----
> From: Andres Riancho <andres.riancho en gmail.com>
> Sender: "pyar" <pyar-bounces en python.org.ar>Date: Fri, 30 Jan 2015 08:56:33
> To: Python Argentina<pyar en python.org.ar>
> Reply-To: Python Argentina <pyar en python.org.ar>
> Subject: Re: [pyar] Se busca: Backport de modulo de multiprocessing de py3k
>         a 2.7
>
> 2015-01-30 6:20 GMT-03:00 Alejandro Santos <listas en alejolp.com>:
>> Combinar multiprocessing y threading puede ser problematico, por eso
>> desde la 3.4 existe lo que vos estás buscando.
>>
>> El orden de crear cada uno es importante, vos estas primero creando el
>> thread y despues el multiprocess, podes hacerlo al reves para no
>> heredar con el fork los sockets de tus threads.
>>
>> $ python qqq.py
>> frames from main1: [(140696442406656, <frame object at 0x75d1c0>)]
>> frames from main2: [(140696318297856, <frame object at
>> 0x7ff664000f40>), (140696442406656, <frame object at 0x75d1c0>)]
>> frames from worker: [(140696442406656, <frame object at 0x7c6530>)]
>
> Claro, pero igual este era simplemente un ejemplo de las cosas
> inesperadas que pasan con multiples threads y fork(), otra que me paso
> es que las tools de profiling (meliae, yappi, pytracemalloc) se
> vuelven locas y no reportan cosas coherentes. Algunas que he escuchado
> que pasan son dead-locks (en malloc por ejemplo) y en otras partes
> donde haya locks mi codigo/librerias.
>
>> Como alternativa podes hacer manualmente un exec de un python para
>> tener algo limpio sin thread del parent (asi funcionan spawn y
>> forkserver), pero tenes que hacer la sincronizacion a mano.
>
> Si, estaba pensando un poco en eso y creo que llegue a una
> arquirectura, algo compleja pero es lo que hay...
>     * El MainProcess levanta un proceso Parser usando subprocess.Popen
>     * El proceso Parser levanta un server de zerorpc-python [0] y
> escucha en un unix-socket
>     * MainProcess utiliza zerorpc-python para enviar datos, recibir
> resultados, etc. del proceso remoto
>     * El proceso Parser implementa un signal handler para Ctrl+C, en
> el cual hace zerorpc.stop(), cleanup, etc.
>     * Si MainProcess ve que el proceso Parser tarda mas que un tiempo
> determinado en completar una operacion entonces le manda un signal
> para que el proceso muera y levanta otro. Algo similar ocurre cuando
> MainProcess ha terminado y quiere matar a Parser para cerrar
> limpiamente.
>
> Esta es la manera que encontre hasta ahora para a) tener un proceso
> 100% distinto y b) comunicarme limpiamente con él
>
> Algun otro metodo de RPC que recomienden para python fuera de zerorpc?
>
> PD: Ya me parecia raro no recibir una respuesta de Alejandro "tiene
> todas las respuestas a mis preguntas" Santos :)
>
> [0] https://github.com/dotcloud/zerorpc-python
>
>>
>>
>> 2015-01-28 2:41 GMT+01:00 Andres Riancho <andres.riancho en gmail.com>:
>>> Lista,
>>>
>>>     Ando buscando un backport del modulo de multiprocessing de py3k a
>>> 2.7. Lo mas cercano que encontre fue el billiard de celery, pero al
>>> parecer todavia su backport no esta terminado/funcional.
>>>
>>>     Lo que me interesa de la nueva version del modulo en py3k es la
>>> funcionalidad de "spawn" [0] para los sub-procesos, la cual es
>>> diferente de la unica provista en 2.7 que es os.fork()
>>>
>>>     Si estan interesados en el porque de esta necesidad pueden leer [1][2].
>>>
>>> [0] https://docs.python.org/3.4/library/multiprocessing.html#multiprocessing.set_start_method
>>> [1] http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them
>>> [2] https://gist.github.com/andresriancho/957180a06be43fa9c654
>>>
>>> Saludos,
>>> --
>>> Andrés Riancho
>>> Project Leader at w3af - http://w3af.org/
>>> Web Application Attack and Audit Framework
>>> Twitter: @w3af
>>> GPG: 0x93C344F3
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
>>
>>
>>
>> --
>> Alejandro Santos
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
>
>
>
> --
> Andrés Riancho
> Project Leader at w3af - http://w3af.org/
> Web Application Attack and Audit Framework
> Twitter: @w3af
> GPG: 0x93C344F3
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar



-- 
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3


More information about the pyar mailing list