Re: [Python-es] Insertar registros cada segundo

2016-05-04 Por tema David Samaniego
La version de python que uso es 2.7 y por ventaja es un script puntual que
lee solamente dos variables snmp en un solo equipo, asi que se descarta el
tema de multihilos, Les comparto la parte del codigo que tengo realizado.
No se si sea lo más optimo pero como está funciona. En el schedule.every si
le pongo 1 me guarda los registros cada 2 segundos y al colocarlo 0.5
efectivamente inserta cada 1 segundo como lo necesito.

Aqui va lo que tengo avanzado hasta ahora.

def interface_counterT1():
try:
indice = "XXX"
fecha = time.strftime('%Y/%m/%d')
tiempo = time.strftime('%H:%M:%S')
community="XX"
interface = "XX.XX.XX.XX"

cmdGen = cmdgen.CommandGenerator()
errorIndication, errorStatus, errorIndex, varBindTableIn =
cmdGen.getCmd(
cmdgen.CommunityData(community),
cmdgen.UdpTransportTarget((interface, 161)),
'1.3.6.1.2.1.2.2.1.10.'+indice
)

cmdGen = cmdgen.CommandGenerator()
errorIndication, errorStatus, errorIndex, varBindTableOut =
cmdGen.getCmd(
cmdgen.CommunityData(community),
cmdgen.UdpTransportTarget((interface, 161)),
'1.3.6.1.2.1.2.2.1.16.'+indice
)

cadena_conexion = ['localhost', '', '', '']
conexion_db = db_herramientas.connect(*cadena_conexion)
cursor_db = conexion_db.cursor()

for name, val in varBindTableIn:
nombre = name.prettyPrint()
counterIN = val.prettyPrint()
sentido = "INPUT"
insertar = """INSERT INTO TABLAX
(`id_interface`,
`fecha`,
`hora` ,
`sentido` ,
`counter`) VALUES ('%s', '%s','%s','%s','%s');"""
%(int(indice), fecha, tiempo, sentido, counterIN )
cursor_db.execute(insertar)

for name, val in varBindTableOut:
nombre = name.prettyPrint()
counterOUT = val.prettyPrint()
sentido = "OUTPUT"
insertar = """INSERT INTO TABLAX
(`id_interface`,
`fecha`,
`hora` ,
`sentido` ,
`counter`) VALUES ('%s', '%s','%s','%s','%s');"""
%( int(indice), fecha, tiempo, sentido, counterOUT )
cursor_db.execute(insertar)

conexion_db.commit()
cursor_db.close()
conexion_db.close()
except:
print "Error"

schedule.every(0.5).seconds.do(interface_counterT1)
while True:
 schedule.run_pending()
# time.sleep(1)

2016-05-03 16:10 GMT-03:00 Chema Cortes :

> El mar., 3 may. 2016 a las 17:41, David Samaniego ()
> escribió:
>
>> Hola buena tarde, dispongo de un script  que realiza un una consulta smnp
>> y la informacion la inserta en una tabla mysql. El tema es que necesito que
>> cada consulta snmp se lo realice cada 1 segundo, ya que tiene que guardar
>> los tiempos para analizarlos porteriormente.
>> Lo que estaba haciendo para probar es lanzar un crontab que ejecute el
>> script, pero el tiempo minino es un minuto, así que no se me ocurre como
>> hacer para que cada insert lo haga en el tiempo que necesito. (Creo que
>> debo hacer un bucle que itere cada 1 segundo hasta 60  y que cuando termine
>> lo vuelva a ejecutar el crontab para que se vuelva a repetir.
>>
>> Alguna sugerencia de como puedo llevar a cabo la idea??
>>
>> Agradezco cualquier comentario.
>>
>
> Para darte una respuesta adecuada, se necesitaría saber qué versión de
> python estás usando y en qué plataforma usas.
>
> La solución "clásica" de usar time.sleep no es la recomendada en
> aplicaciones multihilo. Es mejor usar soluciones más "responsibles" como
> event.wait (suponiendo que estés usando python3).
>
> Mi consejo en que uses threading.Timer con python2; y el módulo sched
> (valores por defecto) con python3. (En la documentación de sched para
> python2 te explica cómo usar Timer).
>
> y si puedes elegir, python3.
>
> Por otra parte, supongo que no tienes probado lo de insertar datos cada
> segundo en una tabla mysql. Si estás pensando en lanzar varios scripts para
> traerte datos de distintos dispositivos, el bloqueo/desbloqueo de registros
> o tabla para insertar datos podría ser un problema. Yo no juntaría en el
> mismo script la extracción de datos snmp con la inserción de datos en la
> base de datos.
>
>
>
> --
> Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
> http://ch3m4.org/blog
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Insertar registros cada segundo

2016-05-03 Por tema Chema Cortes
El mar., 3 may. 2016 a las 17:41, David Samaniego ()
escribió:

> Hola buena tarde, dispongo de un script  que realiza un una consulta smnp
> y la informacion la inserta en una tabla mysql. El tema es que necesito que
> cada consulta snmp se lo realice cada 1 segundo, ya que tiene que guardar
> los tiempos para analizarlos porteriormente.
> Lo que estaba haciendo para probar es lanzar un crontab que ejecute el
> script, pero el tiempo minino es un minuto, así que no se me ocurre como
> hacer para que cada insert lo haga en el tiempo que necesito. (Creo que
> debo hacer un bucle que itere cada 1 segundo hasta 60  y que cuando termine
> lo vuelva a ejecutar el crontab para que se vuelva a repetir.
>
> Alguna sugerencia de como puedo llevar a cabo la idea??
>
> Agradezco cualquier comentario.
>

Para darte una respuesta adecuada, se necesitaría saber qué versión de
python estás usando y en qué plataforma usas.

La solución "clásica" de usar time.sleep no es la recomendada en
aplicaciones multihilo. Es mejor usar soluciones más "responsibles" como
event.wait (suponiendo que estés usando python3).

Mi consejo en que uses threading.Timer con python2; y el módulo sched
(valores por defecto) con python3. (En la documentación de sched para
python2 te explica cómo usar Timer).

y si puedes elegir, python3.

Por otra parte, supongo que no tienes probado lo de insertar datos cada
segundo en una tabla mysql. Si estás pensando en lanzar varios scripts para
traerte datos de distintos dispositivos, el bloqueo/desbloqueo de registros
o tabla para insertar datos podría ser un problema. Yo no juntaría en el
mismo script la extracción de datos snmp con la inserción de datos en la
base de datos.



-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://ch3m4.org/blog
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Insertar registros cada segundo

2016-05-03 Por tema Alvaro Manrique
Yo creo que sólo con la función Sleep basta para lograr el cometido.

--
Alvaro Manrique
Programador Freelance
Venezuela
Tel. Whatsapp: 0424-1760942
Skype:  alvaro_manrique
Twitter: @AJ_Manrique
El may. 3, 2016 11:54 AM, "Daπid"  escribió:

> 2016-05-03 17:31 GMT+02:00 David Samaniego :
> > Alguna sugerencia de como puedo llevar a cabo la idea??
>
> t0 = time.time()
> # consulta smnp
> elapsed = time.time() - t0
> if elapsed < 1:
> time.sleep(1 - elapsed)
>
> Sería bueno guardar el tiempo, porque la red puede caerse
> temporalmente, o el servidor tardar más de un segundo en responder.
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Insertar registros cada segundo

2016-05-03 Por tema Daπid
2016-05-03 17:31 GMT+02:00 David Samaniego :
> Alguna sugerencia de como puedo llevar a cabo la idea??

t0 = time.time()
# consulta smnp
elapsed = time.time() - t0
if elapsed < 1:
time.sleep(1 - elapsed)

Sería bueno guardar el tiempo, porque la red puede caerse
temporalmente, o el servidor tardar más de un segundo en responder.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Insertar registros cada segundo

2016-05-03 Por tema Jaime Perea
El Martes, 3 de mayo de 2016 12:31:52 David Samaniego escribió:
> Hola buena tarde, dispongo de un script  que realiza un una consulta smnp y
> la informacion la inserta en una tabla mysql. El tema es que necesito que
> cada consulta snmp se lo realice cada 1 segundo, ya que tiene que guardar
> los tiempos para analizarlos porteriormente.
> Lo que estaba haciendo para probar es lanzar un crontab que ejecute el
> script, pero el tiempo minino es un minuto, así que no se me ocurre como
> hacer para que cada insert lo haga en el tiempo que necesito. (Creo que
> debo hacer un bucle que itere cada 1 segundo hasta 60  y que cuando termine
> lo vuelva a ejecutar el crontab para que se vuelva a repetir.
> 
> Alguna sugerencia de como puedo llevar a cabo la idea??
> 
> Agradezco cualquier comentario.

¿time.sleep(secs)  podría ser?

https://docs.python.org/2/library/time.html[1] 

--
   Jaime D. Perea Duarte. 
 Linux registered user #10472

   Dep. Astrofisica Extragalactica.
   Instituto de Astrofisica de Andalucia (CSIC)
   Apdo. 3004, 18080 Granada, Spain. 



[1] https://docs.python.org/2/library/time.html
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Insertar registros cada segundo

2016-05-03 Por tema Mauricio Baeza

On 05/03/2016 10:31 AM, David Samaniego wrote:

Hola buena tarde, dispongo de un script  que realiza un una consulta
smnp y la informacion la inserta en una tabla mysql. El tema es que
necesito que cada consulta snmp se lo realice cada 1 segundo, ya que
tiene que guardar los tiempos para analizarlos porteriormente.
Lo que estaba haciendo para probar es lanzar un crontab que ejecute el
script, pero el tiempo minino es un minuto, así que no se me ocurre como
hacer para que cada insert lo haga en el tiempo que necesito. (Creo que
debo hacer un bucle que itere cada 1 segundo hasta 60  y que cuando
termine lo vuelva a ejecutar el crontab para que se vuelva a repetir.

Alguna sugerencia de como puedo llevar a cabo la idea??

Agradezco cualquier comentario.






Prueba: https://github.com/dbader/schedule

Según veo tiene soporte para cada segundo


Saludos


--
__
Todo lo que no podemos dar nos posee... André Gide
Apoya nuestros proyectos: http://universolibre.org/hacemos/
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Insertar registros cada segundo

2016-05-03 Por tema itzcoalt Alvarez
No te queda mejor una rutina que mande a Log el resultado de la consulta
y despues una importacion el SQL?

Saludos


El 03/05/16 a las 10:31, David Samaniego escribió:
> Hola buena tarde, dispongo de un script  que realiza un una consulta
> smnp y la informacion la inserta en una tabla mysql. El tema es que
> necesito que cada consulta snmp se lo realice cada 1 segundo, ya que
> tiene que guardar los tiempos para analizarlos porteriormente.
> Lo que estaba haciendo para probar es lanzar un crontab que ejecute el
> script, pero el tiempo minino es un minuto, así que no se me ocurre
> como hacer para que cada insert lo haga en el tiempo que necesito.
> (Creo que debo hacer un bucle que itere cada 1 segundo hasta 60  y que
> cuando termine lo vuelva a ejecutar el crontab para que se vuelva a
> repetir.
>
> Alguna sugerencia de como puedo llevar a cabo la idea??
>
> Agradezco cualquier comentario.
>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


[Python-es] Insertar registros cada segundo

2016-05-03 Por tema David Samaniego
Hola buena tarde, dispongo de un script  que realiza un una consulta smnp y
la informacion la inserta en una tabla mysql. El tema es que necesito que
cada consulta snmp se lo realice cada 1 segundo, ya que tiene que guardar
los tiempos para analizarlos porteriormente.
Lo que estaba haciendo para probar es lanzar un crontab que ejecute el
script, pero el tiempo minino es un minuto, así que no se me ocurre como
hacer para que cada insert lo haga en el tiempo que necesito. (Creo que
debo hacer un bucle que itere cada 1 segundo hasta 60  y que cuando termine
lo vuelva a ejecutar el crontab para que se vuelva a repetir.

Alguna sugerencia de como puedo llevar a cabo la idea??

Agradezco cualquier comentario.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/