Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-servidor

Estas en el tema de [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-servidor en el foro de Python en Foros del Web. Hola, Estoy intentando crear un programa que haga lo siguiente: El programa debe abrir dos .exe alternativamente el número de veces que le digas, y ...
  #1 (permalink)  
Antiguo 21/03/2014, 13:29
 
Fecha de Ingreso: marzo-2014
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-servidor

Hola,
Estoy intentando crear un programa que haga lo siguiente: El programa debe abrir dos .exe alternativamente el número de veces que le digas, y si el primer .exe dura mas de un tiempo activo, que lo cierre y continue de nuevo abriendo ambos alternativamente. Para ellos he hecho un program cliente-servidor en el que el cliente ejecuta los dos programas y el servidor debe controlar el tiempo del primero, y si este se pasa eliminar el proceso. El cliente es asi:

Código Python:
Ver original
  1. import socket, os, time
  2. s = socket.socket()
  3. s.connect(("localhost",  9999))
  4. programa1 = raw_input("escribe el programa 1: ")
  5. programa2 = raw_input("escribe el programa 2: ")
  6. s.send(programa1)
  7. num = raw_input("escribe el numero de repeticiones: ")
  8. a = 0
  9. n = 0
  10. while  True:
  11.     for x in range(int(num)):
  12.         if n == 0:
  13.             s.send(str(a))
  14.             n = 1
  15.         os.system("programa1")
  16.         a += 1
  17.         s.send(str(a))
  18.         os.system("programa2")
  19.     break
  20. s.close()
  21.  
  22. Y el servidor:
  23. import socket, time, os
  24. s = socket.socket()
  25. s.bind(("localhost",  9999))
  26. s.listen(10)
  27. sc, addr = s.accept()
  28. n = 0
  29. print "Recibo conexion de " + str(addr[0]) + ":" + str(addr[1])
  30. while  True:
  31.     recibido = sc.recv(1024)
  32.     t1 = time.time()
  33.     if recibido == "0":
  34.         n = 1
  35.     if n == 1:
  36.         recibido = sc.recv(1024)
  37.         a = recibido
  38.         while True:
  39.             if time.time() - t1 > 2:
  40.                 recibido = sc.recv(1024)
  41.                 if int(a)+1 == int(recibido):
  42.                     os.system("taskkill/im" + str(programa")
  43.                break
  44. sc.send(recibido)
  45. sc.close()
  46. s.close()
Este es solo uno de los muchos intentos, estoy bastante frustrado y sinceramente no soy capaz de terminarlo.
Antes de nada gracias y un saludo

PD: He creado el tema dos veces, porque sin querer he marcado el primero como solucionado, lo siento

Última edición por razpeitia; 22/03/2014 a las 09:46
  #2 (permalink)  
Antiguo 21/03/2014, 14:05
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Al menos dinos dónde está tu problema... y por favor usa la etiqueta highlight para encerrar el codigo.

  #3 (permalink)  
Antiguo 22/03/2014, 04:59
 
Fecha de Ingreso: marzo-2014
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Hola, gracias por responder
Lo cierto es que el problema varía según intento una cosa u otra pero basicamente el servidor no cumple su fucion. El cliente ejecuta ambos programas como debe ser pero el servidor no cuenta el tiempo correctamente, y cierra el proceso aleatoriamente.

Un saludo
  #4 (permalink)  
Antiguo 22/03/2014, 09:51
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Pero fijate que tu codigo tiene errores de sintaxis (te faltan cerrar algunos parentesis y comillas) y no entiendo que metodo usas para contar el tiempo, explica un poco eso sobretodo

  #5 (permalink)  
Antiguo 22/03/2014, 13:29
 
Fecha de Ingreso: marzo-2014
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

¿Donde faltan parentesis y comillas?
Sinceramente, la medida del tiempo la he cambiado tanto intentando hacer que funcione que la actual no es muy allá, pero igualmente cada vez que el cliente ejecuta el .exe al terminar envía un número (a), que cambia cada vez. El servidor recibe el número con recibido y lo iguala a una variable, también a. Después con time.time() cuenta el tiempo. Al llegar a 2, si a sigue siendo igual a recibido (el cliente no ha cambiado el valor y por tanto sigue ejecuntado el .exe) cierra el proceso. En el último if suma a la variable a 1, esto es simplemente porque estuve probando con cambios, aunque en el original es simplemente a. Eso es basicamente, aunque como digo no funciona...
Muchas gracias por responder
  #6 (permalink)  
Antiguo 22/03/2014, 15:18
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

En la línea 42 del código que pusiste al principio de todo.
  #7 (permalink)  
Antiguo 22/03/2014, 15:38
 
Fecha de Ingreso: marzo-2014
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Ok gracias, aunque tienes alguna solución para el programa?
  #8 (permalink)  
Antiguo 22/03/2014, 16:54
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Es que no se por qué se me hace dificil entender tu codigo (tal vez por la ausencia absoluta de comentarios) y nombre de variables poco descriptivos.

Digo, como haces para saber una vez que se ha cerrado el programa?
  #9 (permalink)  
Antiguo 22/03/2014, 17:36
 
Fecha de Ingreso: marzo-2014
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

No se si he entendido tu pregunta, si te refieres a que como se cuando cierra el proceso del exe, porque el servidor lo dice. No he escrito comentarios porque no me parece un codigo muy complicado, el 80% es la estructura estandar de un programa cliente servidor, lo realmente añadido por mi está dentro del while true, son 13 lineas.

Gracias y un saludo
  #10 (permalink)  
Antiguo 22/03/2014, 17:48
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Y cómo sabe el servidor cuánto tiempo está activo el programa?

Cita:
Iniciado por popirey Ver Mensaje
El programa debe abrir dos .exe alternativamente el número de veces que le digas, y si el primer .exe dura mas de un tiempo activo, que lo cierre...
A eso me refiero.
  #11 (permalink)  
Antiguo 22/03/2014, 18:15
 
Fecha de Ingreso: marzo-2014
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Hay radica basicamente el problema, en saber controlar eso. Con time.time()-t1, siendo t1 el punto en el tiempo en el que empezó, cuando ese valor supera a 2 en "while True" tecnicamente lo cierra. El problema esta en decirle al servidor cuando empieza y cuando termina el programa, para que el controle el tiempo y lo cierre si es preciso.
  #12 (permalink)  
Antiguo 22/03/2014, 18:43
 
Fecha de Ingreso: diciembre-2011
Mensajes: 408
Antigüedad: 12 años, 10 meses
Puntos: 18
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Cita:
Iniciado por popirey Ver Mensaje
Hay radica basicamente el problema, en saber controlar eso. Con time.time()-t1, siendo t1 el punto en el tiempo en el que empezó, cuando ese valor supera a 2 en "while True" tecnicamente lo cierra. El problema esta en decirle al servidor cuando empieza y cuando termina el programa, para que el controle el tiempo y lo cierre si es preciso.
creo que con una programacion de sockets puedes hacer que la aplicacion este activa para ello te recomiendo que uses la misma metodologia que usa skype google talk o el antiguo msn pues ellos funcionan como cliente y servidor a la vez
  #13 (permalink)  
Antiguo 22/03/2014, 19:02
 
Fecha de Ingreso: marzo-2014
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Gracias por responder
Me puedes explicar como hacerlo? Es decir, estoy usando sockets pero es la primera vez y tampoco lo tengo muy claro xD.
  #14 (permalink)  
Antiguo 22/03/2014, 20:06
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Si yo tuviera que hacer esto, usaría una DLL escrita en C/C++ que inyecte el proceso y así detectar cuándo se cierra. Es lo mas certero. De otra manera no sabría cómo implementarlo.

  #15 (permalink)  
Antiguo 22/03/2014, 20:20
 
Fecha de Ingreso: marzo-2014
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Supongo que si puede ser mas facil con otros lenguajes, pero no entiendo nada de ellos asi que no se como hacerlo =(. Me puedes ayudar un poco con esto?
  #16 (permalink)  
Antiguo 22/03/2014, 20:51
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Mmm podes verificar si el proceso deja de existir usando los comandos de Windows... pero tendrías que estar verificando constantemente, cosa que te va a consumir muchos recursos.
  #17 (permalink)  
Antiguo 23/03/2014, 05:22
 
Fecha de Ingreso: marzo-2014
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

El programa si lo elimino con la orden taskkill, el problema es que no llega hasta ahi, o no llega cuando debería. No se como contar el tiempo de manera efectiva mandando mensajes desde el cliente. Tienes alguna idea para conseguirlo?
  #18 (permalink)  
Antiguo 23/03/2014, 11:17
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

Justamente en mi mensaje anterior te dije cómo lo haría
  #19 (permalink)  
Antiguo 23/03/2014, 13:11
 
Fecha de Ingreso: marzo-2014
Mensajes: 10
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

jaja ok ok no estoy muy rapido. Lo cierto es que no lo había pensado, voy a trabajar en ello y te cuento los resultados. Muchas gracias por la ayuda! =)
  #20 (permalink)  
Antiguo 23/03/2014, 13:23
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: [SOLUCIONADO] Controlar tiempo de ejecución de .exe con programa cliente-s

De nada Suerte!

Etiquetas: cliente, servidor, tiempo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:17.