<html><head></head><body>Es un buen apunte, yo no he trabajado con procesos que consumiesen tanta RAM<br><br><div class="gmail_quote">On July 5, 2021 11:12:24 PM GMT+02:00, Jose Manuel <jakermater@gmail.com> wrote:<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div dir="auto">Quería señalar que si te quedas sin RAM y el trabajo está ya lanzado, si te quedas sin el.<div dir="auto"><br></div><div dir="auto">Y aunque hagas try, except finally. Al ser matado por el sistema no lo captura ni el try ni sentry.</div><div dir="auto"><br></div><div dir="auto">Hablo de creación de ficheros de más de 10GB .</div><div dir="auto"><br></div><div dir="auto">Y lo resalto porque bueno, parece obvio cuando ya lo sabes, pero cuando no, te pegas de leches con los try except...</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El lun., 5 jul. 2021 22:41, Federico Mon <<a href="mailto:gnu.fede@gmail.com">gnu.fede@gmail.com</a>> escribió:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Yo he usado Celery (poco) y Redis Queue (algo más) y me quedo con este último.<br><br>En general, no tengo la experiencia de que se mueran los workers. Los trabajos pueden fallar, si salta alguna excepción, etc, pero con un Sentry o similar puedes estar al tanto.<br><br>Creo que en tu caso sería levantar tantos workers como cores tengas, y así no te excedes con los trabajos simultáneos. Quizás meterlo bajo un supervisor para asegurarte de que no mueren?<br><br><div class="gmail_quote">On July 5, 2021 9:30:25 PM GMT+02:00, Felipe Maza <<a href="mailto:felipe@felipem.com" target="_blank" rel="noreferrer">felipe@felipem.com</a>> wrote:<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr"><div>Hola,</div><div><br></div><div>Llevo unos días viendo diferentes programas para gestionar sistemas de colas y, en principio, creo que casi todos parecen complejos para lo que necesito.</div><div><br></div><div>Mi problema a resolver es el siguiente, tenemos un modelo de predicción que se ejecuta periódicamente y también bajo demanda del usuario. Ese modelo se ejecuta en un solo hilo y tarda bastantes minutos en completar la tarea. Por tanto, puedo tener varias ejecuciones simultáneas siempre que no excedamos el número de cores disponibles, ya que en ese caso se vuelve el sistema excesivamente lento. Al modelo se le invoca a través de una pequeña api hecha con <span style="font-family:monospace">flask</span>. En el futuro puede que haya otros modelos en la misma máquina.</div><div><br></div><div>Hace un par de años para un problema similar ya me programé mi propio gestor de colas rudimentario,pero ahora busco algo que sea estable, con pocos bugs, mantenible, etc.</div><div><br></div><div>Las características que (creo que) necesito son:</div><div>- Encolar tareas (logicamente)</div><div>- Tener colas con diferente prioridad (manuales, periódicas).</div><div>- Registrar la salida, tanto si ha tenido éxito como si ha tenido errores.</div><div>- (opcional) En un futuro ejecutar otras apis con modelo en la misma máquina.<br></div><div><br></div><div></div><div><br></div><div>Lo primero que he explorado ha sido <span style="font-family:monospace">Celery</span>, y es impresionante el montón de posibilidades que ofrece, tantas que ir poco más de los ejemplos iniciales me parece muy complejo para solucionar el problema anterior. Me da la sensación que hay que controlar un montón de aspectos para montarlo y mantenerlo correctamente; y que cuando aparezca algún error no va a ser rápido dar con la solución.</div><div><br></div><div>Después de mirar otras alternativas, con la que parece que he montado una primera versión que parece que me lo soluciona, es <span style="font-family:monospace">Redis Queue </span>(<a href="https://python-rq.org/" target="_blank" rel="noreferrer">https://python-rq.org/</a>). La forma en la que utiliza <span style="font-family:monospace">Redis</span> es relativamente simple, y más o menos ofrece lo que necesito.</div><div>En el tema de los <span style="font-family:monospace">worker</span> creo que ahí flojea un poco, pues parece que tendré que gestionar manualmente cuántos hay arrancados y si no se han muerto.</div><div><br></div><div><br></div><div></div><div>¿Tenéis experiencia resolviendo algún problema similar? ¿Creéis que merece la pena el esfuerzo para aprender <span style="font-family:monospace">celery</span> (u otra solución) para algo que no debería ser muy complejo? ¿<span style="font-family:monospace">Redis</span> os parece buen motor o debería ir a <span style="font-family:monospace">Rabbitmq</span>? Nunca había usado ninguno de ellos. ¿Cómo gestionais el tema de los <span style="font-family:monospace">worker</span>? Seguro que es más sencillo de lo que creo.<br></div><div>Cualquier comentario que queráis hacer será bienvenido.</div><div><br></div><div>Gracias,<br></div><div><br></div><div>Un saludo.<br></div><div></div></div></blockquote></div></div>_______________________________________________<br>
Asociación Python España: <a href="http://www.es.python.org/" rel="noreferrer noreferrer" target="_blank">http://www.es.python.org/</a><br>
general mailing list<br>
<a href="mailto:general@lists.es.python.org" target="_blank" rel="noreferrer">general@lists.es.python.org</a><br>
<a href="https://lists.es.python.org/listinfo/general" rel="noreferrer noreferrer" target="_blank">https://lists.es.python.org/listinfo/general</a><br>
</blockquote></div>
</blockquote></div></body></html>