Articles of señales de

Python: Cómo evitar que los subprocesos reciban CTRL-C / Control-C / SIGINT

Actualmente estoy trabajando en un contenedor para un servidor dedicado que se ejecuta en el shell. La envoltura genera el proceso del servidor a través de un subproceso y observa y reactjs a su salida. Al servidor dedicado se le debe dar explícitamente un comando para que se apague correctamente. Por lo tanto, CTRL-C no […]

Detener una función de terceros

Esto es parte de un proyecto complejo, lo intentaré y lo simplificaré. Tengo una clase que obtiene un ejecutable y la ejecuta, el ejecutable puede ejecutarse durante cualquier período de tiempo. Si recibo una señal (puede estar usando Signal o cualquier otra bandera que vea) para terminar, quiero terminar la ejecución de la llamada en […]

Cómo obtener una referencia a un método de instancia de un decorador

He estado usando una biblioteca de GUI que te permite conectar señales a manejadores de señales usando una función de conexión, por ejemplo: widget.connect(signal, callback) Significa que la función de callback se ejecutará siempre que la señal se dispare desde el widget. En un bash por hacer que mi código sea más agradable y eliminar […]

Cómo manejar la señal en Python en Windows.

Estoy probando el código pegado a continuación en Windows, pero en lugar de manejar la señal, está matando el proceso. Sin embargo, el mismo código funciona en Ubuntu. import os, sys import time import signal def func(signum, frame): print ‘You raised a SigInt! Signal handler called with signal’, signum signal.signal(signal.SIGINT, func) while True: print “Running…”,os.getpid() […]

Capture Ctrl + C / SIGINT y salga de multiprocesos con gracia en Python

¿Cómo puedo capturar un Ctrl + C en el progtwig Python multiproceso y salir de todos los procesos con gracia? Necesito la solución para trabajar tanto en Unix como en Windows. He intentado lo siguiente: import multiprocessing import time import signal import sys jobs = [] def worker(): signal.signal(signal.SIGINT, signal_handler) while(True): time.sleep(1.1234) print “Working…” def […]

¿Señal de función de alarma con resolución superior a 1 segundo?

Estoy tratando de construir una excepción de tiempo de espera de python que se ejecuta en milisegundos. La función de python signal.alarm tiene una resolución de 1 segundo. ¿Cómo se podría obtener una función equivalente que solicite una señal SIGALRM para un proceso determinado en, por ejemplo, milisegundos, en lugar de segundos? No he encontrado […]

Tiempo fuera decorador en una función de multiprocesamiento

Tengo este decorador tomado directamente de un ejemplo que encontré en la red: class TimedOutExc(Exception): pass def timeout(timeout): def decorate(f): def handler(signum, frame): raise TimedOutExc() def new_f(*args, **kwargs): old = signal.signal(signal.SIGALRM, handler) signal.alarm(timeout) try: result = f(*args, **kwargs) except TimedOutExc: return None finally: signal.signal(signal.SIGALRM, old) signal.alarm(0) return result new_f.func_name = f.func_name return new_f return decorate […]

Python: Catch Ctrl-C comando. Preguntar “realmente quiero salir (y / n)”, reanudar la ejecución si no hay

Tengo un progtwig que puede tener una ejecución larga. En el módulo principal tengo lo siguiente: import signal def run_program() …time consuming execution… def Exit_gracefully(signal, frame): … log exiting information … … close any open files … sys.exit(0) if __name__ == ‘__main__’: signal.signal(signal.SIGINT, Exit_gracefully) run_program() Esto funciona bien, pero me gustaría tener la posibilidad de […]

Django: señal cuando el usuario inicia sesión?

En mi aplicación Django, debo comenzar a ejecutar algunos trabajos de fondo periódicos cuando un usuario inicia sesión y deja de ejecutarlos cuando el usuario cierra sesión, por lo que estoy buscando una manera elegante de ser notificado de un usuario de inicio / cierre de sesión consultar el estado de inicio de sesión del […]

¿Cómo puedo usar señales en django bulk create?

Tengo este codigo Task.objects.bulk_create(ces) Ahora esta es mi señal @receiver(pre_save, sender=Task) def save_hours(sender, instance, *args, **kwargs): logger.debug(‘test’) Ahora esta señal no se dispara a granel crear Estoy usando django 1.8