[pyar] Fwd: Presentación y consulta (Sockets -> envío de datos )
nicopixel
nicopixel en gmail.com
Jue Jun 27 09:48:20 ART 2013
Buenas pythoneros!
Quizás alguien recuerde este thread, supongo que la mayoría no :)
Pero quería avisarles que pude resolverlo y le hice caso a Luis, utilicé
MongoDB (que antes no conocía).
Les dejo el código [0] .
Esta sencilla aplicación la pensé para estudiar y aprender el lenguaje.
Hace poco estoy con Python y me encantaría mejorar mi código y en segunda
instancia las prestaciones de la aplicación.
Si alguien lo mira y quiere tirar unos tips para que sea mas
ordenado/pythonico/eficiente o si
lo quieren mejorar/modificar para otros usos, estaría genial.
Podemos seguirla por acá o por privado, como crean mejor.
Gracias a todos por las ideas!!
[0] https://github.com/npxbyte/pyCollector
---------- Mensaje reenviado ----------
De: Luis I. Facciolo <lifacciolo en gmail.com>
Fecha: 16 de mayo de 2013 12:04
Asunto: Re: [pyar] Presentación y consulta (Sockets -> envío de datos )
Para: Python Argentina <pyar en python.org.ar>
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
>>>
>>>
>>>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130627/27f3a5c9/attachment.html>
More information about the pyar
mailing list