[pyar] Presentación y consulta (Sockets -> envío de datos )

nachopro tranceway en gmail.com
Jue Mayo 16 20:53:35 ART 2013


Mirá, para resolverlo con la metodología "de parado" o tener un proof
of concept usá multiprocessing:

Hacés el worker que recibe los datos por socket y los guarda en una
Queue de multiprocessing; y luego hacés otro worker que vaya
consumiendo esa cola y haga con la info lo que necesites. Es muy
divertido, después cuando lo tengas funcionando y te sientas feliz de
la vida te fijás de adaptar eso a lo que te comentó luís (por un lado
te realizás como programador y por el otro afinás todo, reducís código
y te queda más canchero)

Cualquier cosa, si bien trabaja contra rabbitmq (tranquilamente
cambiable a archivos en disco) fijate esto:
https://github.com/nachopro/baserguin

Saludos!

2013/5/16 nicopixel <nicopixel en gmail.com>:
> Muchas gracias por sus respuestas!!
>
> Angel, un gusto saludarte. He ido a una de tus charlas sobre Java
> hace unos años, a ver cuando me entero de alguna para Python :-)
>
> Por ahora comencé a guardar cada dato recibido con un ID autonumerico
> y luego haré un fichero que se sobreescriba siempre con el ultimo ACK.
>
> Pero me preocupa el consumo de recursos, porque necesito:
>
> 1- Fichero donde almacenar el ultimo valor de mi contador de datos (ID de
> paquete)
> 2- Fichero donde guardar los datos recibidos
> 3- Fichero que guarda los ACK.
>
> Por otra parte, Luis te agradezco mucho tu respuesta, voy a leer
> sobre esas tecnologías porque no las conocía, parecen excelentes!!
> Y seguramente resuelven todo de una forma mas eficiente que lo que podría
> hacerlo yo.
>
> Todo esto irá en un Raspberry así que mi idea sería instalar la menor
> cantidad de servicios posibles y que la app sea en lo posible, portable.
> Por esta razón no uso ni rabbitmq ni una DB.
>
> Como la idea es aprender, haré ambas cosas y a ver con que me quedo :)
>
> Gracias por las ideas !!
>
>
>
>
>
>
> El 16 de mayo de 2013 12:04, Luis I. Facciolo <lifacciolo en gmail.com>
> escribió:
>
>> Perdon que responda en varios mails, pero me acorde de otra cosa, zeromq
>> te va a rendir para la parte de la capa de transporte, ahora para almacenar
>> las cosas en la maquina, podes usar el modulo shelv (breve tutorial:
>> http://scienceoss.com/store-python-objects-so-you-can-use-them-later/) de
>> modo que esta libreria se encargue de tu persistencia en disco (no es lo mas
>> optimo para esto, lo ideal seria usar alguna db orientada a objetos, a mi
>> gusto, como podria ser couchdb, mongodb, etc, pero para un primer
>> acercamiento, o proof of concept, iria bien)
>>
>> Con estas 2 cosas, zeromq, y shelve, resolves el 90% de tu programa, y en
>> bastantes pocas lineas de codigo.
>>
>> Despues comentanos si te sirvio esto o de que manera lo resolviste.
>>
>> Saludos!
>>
>>
>> El 16 de mayo de 2013 12:01, Luis I. Facciolo <lifacciolo en gmail.com>
>> escribió:
>>
>>> Pegale una mirada a http://www.zeromq.org/ que para esto es ideal :)
>>>
>>> Saludos!
>>>
>>>
>>> El 16 de mayo de 2013 11:21, Angel Java Lopez <ajlopez2000 en gmail.com>
>>> escribió:
>>>
>>>> Hola gente!
>>>>
>>>> Ni idea como hacerlo en Python ;-)
>>>>
>>>> Pero yo, como primer baby step, implementaria:
>>>>
>>>> - Cola de mensajes en memoria (uno de mis temas preferidos ;-)
>>>> - El archivo de mensajes, como tenes ahora, grabando lo que vas
>>>> recibiendo, pero identificandolo por nro
>>>> - Cuando de la otra IP te mandan ACK, grabas en un segundo archivo:
>>>> Mensaje 17 ACK. Puede que convenga sobreescribirlo cada vez
>>>>
>>>> Si se cae todo:
>>>>
>>>> - Leo el segundo archivo, donde dice "Mensaje 17 ACK"
>>>> - Leo el primer archivo, salteo todos los mensajes hasta el 17
>>>> exclusivo.
>>>> - El resto de los mensajes constituyen la nueva cola en memoria
>>>>
>>>> Problema:
>>>> - La otra IP te manda el ACK.
>>>> - Y cuando tu programa va a grabar el ACK en el segundo archivo, se
>>>> muere muerto muerto
>>>>
>>>> La idea general: aprovechar el archivo que ya tenes con los mensaje
>>>>
>>>> Problema:
>>>> - Me podes decir: el archivo de mensajes que ya tengo, tienen diez
>>>> millones de mensajes
>>>> Solucion:
>>>> - Grabaria un archivo por mensajes recibidos en tal X minuto, o tal Y
>>>> hora, o lo que sea
>>>>
>>>> Angel "Java" Lopez
>>>> @ajlopez
>>>>
>>>>
>>>>
>>>> 2013/5/16 nicopixel <nicopixel en gmail.com>
>>>>>
>>>>> print('Hola amigos pythonicos!!')
>>>>>
>>>>> Ante todo me presento, me llamo Nico y soy de Buenos Aires.
>>>>>
>>>>> Hace rato que leo sus mails y  me encantaría participar de forma activa
>>>>> en esta lista,
>>>>> aunque por lo pronto dudo tener los conocimientos necesarios para poder
>>>>> brindarle ayuda a alguien.
>>>>>
>>>>> Desde hace ya un tiempo  que estoy jugando con Python,
>>>>> cada vez estoy mas enganchado e intento difundirlo.
>>>>> Este lenguaje hizo que casi me olvide de usar C y con respecto a la web
>>>>> me encanta Django!
>>>>>
>>>>> Suelo tener muchas dudas, ese tipo de dudas en las que Google no te
>>>>> ayuda mucho.
>>>>> Como por ejemplo: "Cual es la  manera mas pythonica de resolver X
>>>>> cosa?" o "cómo estructurar
>>>>> mejor mi proyecto?".
>>>>>
>>>>> Aprovecho plantearles una de ellas a ver si me pueden orientar:
>>>>>
>>>>> Tengo una aplicación que se conecta mediante sockets a un dispositivo,
>>>>> lee información
>>>>> y la deja guardada en archivos de texto.
>>>>>
>>>>> Hasta ahí todo bien, el tema es que necesito que cada dato recibido sea
>>>>> reenviado a otra IP
>>>>> y puerto pero NO puedo permitirme que se pierda información.
>>>>> Razón por la cual debería almacenarlo en algún fichero temporal a modo
>>>>> de buffer
>>>>> (no dispongo de recursos como para utilizar rabbitmq)
>>>>>
>>>>> Mi idea sería implementar ese fichero como si fuera una cola:
>>>>> Ir guardando datos y que haya un "demonio" que vaya enviando siempre el
>>>>> dato
>>>>> mas viejo (mientras se van encolando los datos nuevos).
>>>>> Ese demonio intentaría enviar el dato y cuando recibe el ACK, envía el
>>>>> siguiente dato.
>>>>>
>>>>> Cuál sería la mejor manera de hacer esto?
>>>>>
>>>>> Gracias!
>>>>> Nico
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>>
>>>
>>
>>
>> _______________________________________________
>> 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



-- 
ignacio benedetti a.k.a. nachopro
mailto:tranceway en gmail.com
http://blog.nachopro.com.ar/



More information about the pyar mailing list