[pyar] Demonios y forks en Django

Tio Oscar tioscar en gmail.com
Jue Feb 28 01:07:28 ART 2013


El 27 de febrero de 2013 08:58, Ramiro Morales <cramm0 en gmail.com> escribió:

> Ramiro Morales
>
> On Feb 27, 2013 3:05 AM, "Tio Oscar" <tioscar en gmail.com> wrote:
> >
> > Parece el titulo de un juego de roll, pero no.
> >
> > Tengo una aplicación en Django que al recibir una petición puede mandar
> muchos emails, para eso hice un pool, ese pool lo descargo con un comando
> al manage.py que envía hasta x cantidad de emails, y ese comando lo ejecuto
> atravez de un Cron cada 1 minuto.
> >
> > Ahora, los correos que se mandan para otras funciones (habilitación de
> emails, perdidas de contraseña, etc) pasan por este pool, lo que hace que
> pueda ser un poco tedioso para el usuario, 1 minuto de espera puede ser
> mucho para un usuario que quiere confirmar una cuenta de email.
> >
> > Ahora se me ocurren 2 cosas:
> >
> > 1- Un demonio que este permanentemente.
> > 2- Un comando que se ejecute por 1 minuto enviando todo lo que puede en
> ese tiempo.
> >
> > Los pros y contras son varias, la segunda me salva de si se cae el
> proceso, se que se va a volver a levantar en menos de 1 minuto.
>
> No me queda claro si estas tratando de hacer todo esto en un ciclo
> petición/rta. HTTP. Si es así, no te lo recomiendo porque tratar de crear y
> manejar procesos desde el código que se ejecuta allí es una lotería
> tenirndo en cuenta que el patrón en rl manejo devthreads/procesos es el
> webserver y no tenemos control sobre el mismo.
>
> Creo que es una buena oportunidad para el ejercicio de los n ¿porqué? Por
> ejemplo porqué envías lotes con una cantidad máxima de emails.
>
> Creo que parte de la solución podría estar en usar o congiar en un MTA (o
> más bien un MSA) que desde hace 30 años tienen solucionado el tema de
> manejar colas de correo. Le envías todos y él se encarga. Y si se reinicia
> el hardware no los pierde. Y los envia cuanto antes. Y si no puede
> reintenta. Muy gauchito.
>
> Sobre como hacerle llegar esos mails al MSA es probable que al existir el
> mismo puedas enviar los mails dentro del ciclo req/rta. Sin incurrir en
> demoras pero también podes usar sistemas de colas para esas tareas. Celery
> EA la mas famose pero hay un puñado de opciones.
>
> >
> > Por otro lado (esto es otra aplicacion), tengo un sitio que necesita
> hacer unas consultas TODO el tiempo y hablamos de cantidades en millones,
> asi que aca si o si tengo que hacer un demonio, ahora esas consultas las
> podría hacer en paralelo, y como se que usar threads en python no es muy
> beneficioso (aparte que lo mejor seria utilizar todos los cores del
> servidor) pienzo hacerla con forks.
> >
> > Se que para esta segunda opción existen cosas como twisted pero me
> gustaría usar los modelos y los recursos que tengo ya en Django.
> >
> > Se que se puede forkear porque el propio manage.py lo hace cuando se
> ejecuta el runserver en modo prefork, pero no sé como tendría que encararlo
> correctamente, y si se puede hacer demonizable, mejor.
> >
> > Si alguno me puede dar un aventon se lo agreadecería :-)
> >
> > --
> > Exos ~ Programador, hacker y filósofo
> > web: http://blog.exodica.com.ar
> > Linked'in: http://www.linkedin.com/in/ogexos
> > Twitter: @exos, Indeti.ca: @exos
> > Tels: [+54 11] 6385-EXOS (3967) - [+54 9 11] 6133-2442
> >
> > -----BEGIN GEEK CODE BLOCK-----
> > Version: 3.1
> > GCS/IT d-- s:++ a- C+++$ UBL+++$ P(-) L+++$ !E--- W+++$ !N !o K-? !w---
> !O !M-- V? PS+++@ !PE Y+(++) PGP++ !t--- !5 X++ R(+) tv--? b- DI D-- G e en h>++ r+++(-) y+++>+++++
> > ------END GEEK CODE BLOCK------
> > _______________________________________________
> > 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
>

Gracias por las respuestas, pero en realidad el tema del pool no es el
problema, lo que necesito saber es como hacer un demonio, y si hay algun
problema de utilizar forks.

-- 
Exos ~ Programador, hacker y filósofo
web: http://blog.exodica.com.ar
Linked'in: http://www.linkedin.com/in/ogexos
Twitter: @exos, Indeti.ca: @exos
Tels: [+54 11] 6385-EXOS (3967) - [+54 9 11] 6133-2442

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/IT d-- s:++ a- C+++$ UBL+++$ P(-) L+++$ !E--- W+++$ !N !o K-? !w--- !O
!M-- V? PS+++@ !PE Y+(++) PGP++ !t--- !5 X++ R(+) tv--? b- DI D-- G e@ h>++
r+++(-) y+++>+++++
------END GEEK CODE BLOCK------
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130228/63e3a1a2/attachment.html>


More information about the pyar mailing list