Articles of señales de

Ahorro de trabajo después de un SIGINT

Tengo un progtwig que lleva mucho tiempo en completarse. Me gustaría poder capturar SIGINT (ctrl-c) y llamar al método self.save_work() . Tal como está, mi signal_hander() no funciona ya que self no está definido en el momento en que el progtwig llega a signal_handler() . ¿Cómo puedo configurarlo para que se self.save_work después de un […]

¿Es la asignación de variables de Python atómica?

Digamos que estoy usando un manejador de signal para manejar un temporizador de intervalos. def _aHandler(signum, _): global SomeGlobalVariable SomeGlobalVariable=True ¿Puedo configurar SomeGlobalVariable sin preocuparme de que, en un escenario improbable que al configurar SomeGlobalVariable (es decir, la máquina virtual de Python estaba ejecutando un bytecode para establecer la variable), la asignación dentro del controlador […]

Captura / locking de SIGINT durante una llamada al sistema

He escrito un rastreador web que me gustaría poder detener a través del teclado. No quiero que el progtwig muera cuando lo interrumpa; primero necesita descargar sus datos al disco. Tampoco quiero capturar KeyboardInterruptedException , porque los datos persistentes podrían estar en un estado incoherente. Mi solución actual es definir un manejador de señales que […]

Manejadores de señal y registro en Python.

La documentación para el módulo de registro dice que Si está implementando manejadores de señales asíncronos utilizando el módulo de señales, es posible que no pueda usar el registro desde dichos manejadores. Esto se debe a que las implementaciones de locking en el módulo de subprocesamiento no siempre son reingresantes, por lo que no pueden […]

addHow para hacer que la señal django post_save se ejecute solo durante la creación

Estoy usando django-notifications en mi proyecto y quiero notificar a un usuario en particular cada vez que se crea un modelo usando la señal, pero post_save también se ejecuta cuando se actualiza un modelo. ¿Cómo puedo evitar esto y hacer que solo se ejecute el método post_save? cuando se crea un modelo. modelos.py class Card(models.Model): […]

Accediendo a la solicitud del usuario en una señal post_save

He hecho la siguiente señal de post_save en mi proyecto. from django.db.models.signals import post_save from django.contrib.auth.models import User # CORE – SIGNALS # Core Signals will operate based on post def after_save_handler_attr_audit_obj(sender, **kwargs): print User.get_profile() if hasattr(kwargs[‘instance’], ‘audit_obj’): if kwargs[‘created’]: kwargs[‘instance’].audit_obj.create(operation=”INSERT”, operation_by=**USER.ID**).save() else: kwargs[‘instance’].audit_obj.create(operation=”UPDATE”).save() # Connect the handler with the post save signal – Django […]

¿Cómo puedo enviar una señal desde un progtwig de python?

Tengo este código que escucha las señales USR1. import signal import os import time def receive_signal(signum, stack): print ‘Received:’, signum signal.signal(signal.SIGUSR1, receive_signal) signal.signal(signal.SIGUSR2, receive_signal) print ‘My PID is:’, os.getpid() while True: print ‘Waiting…’ time.sleep(3) Esto funciona cuando envío señales con kill -USR1 pid Pero, ¿cómo puedo enviar la misma señal desde el script de python […]

Obtener pid del proceso que ha activado alguna señal.

¿Es posible averiguar el identificador de proceso del proceso que ha causado alguna señal? En mi caso, tengo varios hijos de un proceso en ejecución, y quiero saber cuál de ellos envió la señal.

¿La señal de Python no funciona incluso en Cygwin?

La señal de Python no parece funcionar en Windows incluso si ejecuto el script de python dentro de Cygwin. Obtengo el objeto AttributeError: ‘module’ object has no attribute SIGALRM ¿Hay alguna manera de evitar esto en Windows? Solo estoy ejecutando el ejemplo al final de http://docs.python.org/2/library/signal.html

¿Cómo evitar que Python propague señales a subprocesos?

Estoy usando python para manejar algunas simulaciones. Construyo los parámetros y ejecuto el progtwig usando: pipe = open(‘/dev/null’, ‘w’) pid = subprocess.Popen(shlex.split(command), stdout=pipe, stderr=pipe) Mi código maneja diferentes señales. Ctrl + C detendrá la simulación, me preguntará si quiero guardar y saldrá correctamente. Tengo otros manejadores de señales (por ejemplo, para forzar la salida de […]