INICIO FORO
Regresar   ForoCoches > Zona General > Electrónica / Informática

  Manera mas LIMPIA de hacer esto? +python  
Respuesta

 
Herramientas
Viejo 12-jun-2019, 16:52   #1
Miri Kitty
ForoCoches: Miembro
 
Dic 2018 | 2.984 Mens.
Lugar: 127.0.0.1

telegram: @gnubie

Arrow Manera mas LIMPIA de hacer esto? +python

tengo un script en python que cada minuto me dice si dentro de mi ordenador(maquina virtual) hay un proceso ejecutandose o no, y me envia un mensaje a telegram si el proceso esta vivo, o si no lo esta me manda otro.


La cuestion es que solo me manda el mensaje cuando cambia de estado es decir
Cuando pasa de el proceso no ejecutarse > a ejecutarse

o de ejecutarse > a no ejecutarse
lo que significa que si durante toda la ejecucion ese proceso esta en el mismo estado, no me enviara esa informacion.


Por que pregunto esto? por que tal y como esta ahora funciona, envia la informacion al abrirse y al cerrarse. pero quiero mejorarlo y guardar informacion en una base de datos y no se dentro del codigo cuando decirle al programa que envie dicha informacion a la base de datos


Ya que si nos ponemos en el supuesto de que la maquina virtual se enciende(el script corre por defecto cuando se enciende la maquina) y el proceso al principio no esta pero luego si y el proceso no se cierra durante todo el tiempo que la maquina virtual esta encendida, al no cambiar de estado.




https://pastebin.com/inehnueA >> codigo




La chapuza que se me ocurre es crear 1 timer que cada X minutos se conecte a la base de datos y envie la informacion que quiero pero me parece una chapuza por que lo ideal seria que sea lo mas preciso posible

Última edición por Miri Kitty fecha: 12-jun-2019 a las 16:55.
Miri Kitty está desconectado   Responder Con Cita


Viejo 12-jun-2019, 17:01   #2
fuentepa
ForoCoches: Miembro
 
Mar 2015 | 522 Mens.
Lugar: Leon

Honda Civic

no se pyton pero me da que el while de dentro se te esta quedando todo el rato ahi hasta que cambia, por eso no ves mensajes cada cierto tiempo, solo con cambios.


Al menos es lo que parece
fuentepa está desconectado   Responder Con Cita
Viejo 12-jun-2019, 17:31   #3
Miri Kitty
ForoCoches: Miembro
 
Dic 2018 | 2.984 Mens.
Lugar: 127.0.0.1

telegram: @gnubie

Cita:
Originalmente Escrito por fuentepa Ver Mensaje
no se pyton pero me da que el while de dentro se te esta quedando todo el rato ahi hasta que cambia, por eso no ves mensajes cada cierto tiempo, solo con cambios.


Al menos es lo que parece
claro, mi pregunta es esa como hacerlo sin que solo me avise cuando cambia, no se me ocurre como
Miri Kitty está desconectado   Responder Con Cita
Viejo 12-jun-2019, 17:44   #4
Sagnam
ForoCoches: Miembro
 
Avatar de Sagnam
 
Dic 2013 | 313 Mens.
Lugar: De la rotonda
No tengo ni idea de Python pero no se si te puede servir usar Cron cada x minutos o horas, que compruebe el estado y lo guarde en la base de datos

Sagnam está desconectado   Responder Con Cita


Viejo 12-jun-2019, 17:48   #5
Miri Kitty
ForoCoches: Miembro
 
Dic 2018 | 2.984 Mens.
Lugar: 127.0.0.1

telegram: @gnubie

Cita:
Originalmente Escrito por Sagnam Ver Mensaje
No tengo ni idea de Python pero no se si te puede servir usar Cron cada x minutos o horas, que compruebe el estado y lo guarde en la base de datos



claro ahi el problema seria que este programa que comprueba se ejecuta desde que la maquina se enciende asta que se apaga y se ejecuta todo el rato para comprobar si el proceso esta vivo o no, y esa lista donde se guardan los tiempos esta en este programa es decir esa informacion esta ahi, veo mucho lio hacerlo en otro ya que


vamos que si lo hago en otro programa tendria que ingeniarmelas de otra manera, ademas el problema principal es que solamente suma tiempo a la lista cuando cambia de estado, necesito cambiar como comprueba o hacer que este programa cada X tiempo se conecte a la base de datos y sume el tiempo de ejecucion que lleva ese proceso.
Miri Kitty está desconectado   Responder Con Cita
Viejo 12-jun-2019, 19:32   #6
Sagnam
ForoCoches: Miembro
 
Avatar de Sagnam
 
Dic 2013 | 313 Mens.
Lugar: De la rotonda
Cita:
Originalmente Escrito por Miri Kitty Ver Mensaje
claro ahi el problema seria que este programa que comprueba se ejecuta desde que la maquina se enciende asta que se apaga y se ejecuta todo el rato para comprobar si el proceso esta vivo o no, y esa lista donde se guardan los tiempos esta en este programa es decir esa informacion esta ahi, veo mucho lio hacerlo en otro ya que


vamos que si lo hago en otro programa tendria que ingeniarmelas de otra manera, ademas el problema principal es que solamente suma tiempo a la lista cuando cambia de estado, necesito cambiar como comprueba o hacer que este programa cada X tiempo se conecte a la base de datos y sume el tiempo de ejecucion que lleva ese proceso.
Por lo que decís en el último párrafo entonces te podría valer usar cron yo creo y que ese cron lance solo la función de guardar en BD

Sagnam está desconectado   Responder Con Cita
Viejo 12-jun-2019, 20:00   #7
Miri Kitty
ForoCoches: Miembro
 
Dic 2018 | 2.984 Mens.
Lugar: 127.0.0.1

telegram: @gnubie

Cita:
Originalmente Escrito por Sagnam Ver Mensaje
Por lo que decís en el último párrafo entonces te podría valer usar cron yo creo y que ese cron lance solo la función de guardar en BD
tendria que hacer que se acabase la ejecucion de el proceso primero, para que asi se quede guardado el tiempo de ejecucion y luego hacer el envio de datos a la base de datos
he pensado en hacerlo con threading ejecutando a la vez 2 funciones, una se ejecutara 5 minutos antes de que se apage la maquina virtual, cerrara el proceso y una vez cerrado espera 1 minuto y ejecuta el envio de datos a la base de datos


https://pypi.org/project/schedule/


es lo que se me ha ocurrido.
Miri Kitty está desconectado   Responder Con Cita
Viejo 12-jun-2019, 20:31   #8
hzz32
ForoCoches: Miembro
 
Nov 2014 | 480 Mens.
Que problema hay con usar un timer? No entiendo bien el problema con la explicación que das, ¿quieres que cada minuto tu script valide si un proceso está en ejecución, o que te notifique cuando arranca y muere este proceso?
hzz32 está conectado ahora   Responder Con Cita
Viejo 13-jun-2019, 09:43   #9
Cuboy
ForoCoches: Miembro
 
Dic 2015 | 953 Mens.
Lugar: España

Ninguno

Lo podrías hacer cada cierto tiempo, algo asíncrono que imagino que es como se hace normalmente.

Imagino que existen funciones que cuentan el tiempo en python, lo metes en un while todo y ale xd.
No es lo más bonito pero imagino que funcionará
Cuboy está desconectado   Responder Con Cita
Viejo 13-jun-2019, 10:19   #10
Bits
ForoCoches: Miembro
 
Avatar de Bits
 
Jun 2014 | 345 Mens.
Como te han dicho arriba, con un cron que compruebe el proceso y te envie mensaje si esta o no abierto el proceso, te quitas de while y de controlar tu los tiempos.
Bits está desconectado   Responder Con Cita


Respuesta

Regresar   Inicio | ForoCoches > Zona General > Electrónica / Informática

Regresar Amazon.es

    - Electrónica
    - Informática
    - VideoJuegos
    - Libros
    - Bricolaje y Herramientas
 PCComponentes.com

    - Componentes
    - Periféricos
    - Ordenadores
    - Smartphones
    - Audio/Foto/Video

Regresar  Tiendas Chinas:

    - GearBest
    - BangGood
Herramientas


 [ VERSIÓN MÓVIL ]
Info Legal | Privacidad | Cookies | Notificaciones | Normas de uso | Publicidad | Updates | Stats | Ayuda | Invitaciones | Contacto