Re: [Python-es] Insertar registros cada segundo
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
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
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 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
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
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
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
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/