[pyar] Agregar tareas asíncronas por eventos generados de interfaz de usuario

David Weil tenuki en gmail.com
Mie Nov 29 15:26:29 ART 2017


Hola Luis!

On 11/28/2017 1:15 PM, Luis Andraschnik wrote:
>
> Me presento:
>
> for i in pyar_members:
>
>     print('¡¡Hola!!')
>
> Me llamo Luis, uso Python desde hace un año y pico, tengo 49 pirulos, 
> no tengo formación académica en  informática  soy autodidacta,  por lo 
> cual tengo muchas falencias, por lo cual pido disculpas si digo alguna 
> burrada es por pura ignorancia.Hasta acá llegué poreso pido ayuda.
>
> En el laboratorio me está siendo muy útil para análisis , 
> visualización de datos, parsers de salidas del output de algunos 
> equipos para cargar al sistema de manejo de información del lab y 
> también para realizar cálculos que el software propietario de equipos 
> de  análisis infrarrojo y de emisión atómica no puede ser 
> adecuadamente procesados.
>
> Estoy escribiendo una aplicación para monitorear estufas de cultivo de 
> laboratorio vía protocolo modbus que soportan los controladores de 
> temperatura de las estufas, en una arquitectura de red RS485. Cada 
> estufa se puede conectar y desconectar según el inicio y final del 
> ensayo de cultivo. Se pueden conectar hasta aprox 250 estufas 
> simultáneamente y se registran las lecturas en un backend de Sqlite y 
> al mismo tiempo se puede monitorear en un dashboard las lecturas en vivo.
>

Que entretenido!
Contá más, y estaría bueno ver una charla al respecto en algún momento!

> El usuario establece para cada estufa (slave) un polling individual 
> por ejemplo: Estufa 1 c/10 seg, Estufa 2 c/1 seg ...etc., para lo cual 
> probé:
>
> Estrategia 1
>
> Iniciar un proceso independiente por cada estufa (esto salió muy caro 
> en uso de recursos ),  usar zmq para publicar las lecturas, un proceso 
> independiente que subscribe de todos los procesos y grabar al disco en 
> Sqlite y otro proceso para el dashboard (Flask + plotly.js + server 
> sent event)
>
> Estrategia 2
>
> Usar asyncio  (una tarea = polling de una estufa ) para lo cual hice 
> un mock simulando todas las estufas conectadas. Desde el punto de 
> vista de recursos casi no consume nada.
>
> _El problema es que no puedo agregar o quitar tareas al eventloop 
> (conectar o desconectar estufas) desde un evento externo generado por 
> una interfaz de usuario. ¿O no?_
>

Seguramente se pueden agregar y quitar tareas con asyncio, aunque nunca 
lo hice (es que no use asyncio).

Tampoco me queda en claro las diferencias que comentas en ambas 
estrategías.. si.. una diferencia si.. lo de las tareas x estufa.. pero 
no totalmente que procesos hay que hacen c/u..  si queres contalo un 
poco mejor.

Lo de asyncio seguramente alguien te puede comentar mas!

Hasta luego!!
dave


Más información sobre la lista de distribución pyar