Código de Python - Ejecutar cualquier comando con un tiempo determinado

Imágen de perfil
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ejecutar cualquier comando con un tiempo determinadográfica de visualizaciones


Python

Actualizado el 15 de Abril del 2019 por Xve (294 códigos) (Publicado el 29 de Diciembre del 2015)
6.916 visualizaciones desde el 29 de Diciembre del 2015
Este código muestra una función que ejecuta cualquier comando con un timeout o tiempo determinado, definido para cada instrucción.
Esta función tienes que recibir el comando a ejecutar, y el tiempo máximo de ejecución. Si pasado dicho tiempo sigue ejecutándose devuelve la excepción timeout

Versión 1.0

Actualizado el 15 de Abril del 2019 (Publicado el 29 de Diciembre del 2015)gráfica de visualizaciones de la versión: Versión 1.0
6.917 visualizaciones desde el 29 de Diciembre del 2015
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Python 2.x y Python 3.x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import subprocess
import time
import sys
 
class Timeout(Exception):
	pass
 
def run(command, timeout=10):
	"""
	Esta función tienes que recibir el comando a ejecutar, y el tiempo máximo
	de ejecución. Si pasado dicho tiempo sigue ejecutandose devuelve la
	excepcion timeou
	"""
	proc = subprocess.Popen(command, bufsize=0, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
	poll_seconds = .250
	deadline = time.time()+timeout
	while time.time() < deadline and proc.poll() == None:
		time.sleep(poll_seconds)
 
	if proc.poll() == None:
		proc.terminate()
		raise Timeout()
 
	stdout, stderr = proc.communicate()
	return stdout, stderr, proc.returncode
 
if __name__=="__main__":
 
	try:
		# ejecutamos un simple "ls -l"
		(stdout, stderr, returncode)=run(["ls -l"])
		print("ls -l -> ok")
	except Timeout:
		print("timeout")
 
	try:
		# ejecutamos un "find /" que normalmente tarda mas de 5 segundos
		(stdout, stderr, returncode)=run(["find /"], timeout=5) #should timeout
		print("find / -> ok")
	except Timeout:
		print("timeout")



Comentarios sobre la versión: Versión 1.0 (0)


No hay comentarios
 

Comentar la versión: Versión 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3391