j'ai une fonction qui est responsable de la mort d'un processus fils se termine le programme:référençant d'autres modules dans atexit
class MySingleton:
def __init__(self):
import atexit
atexit.register(self.stop)
def stop(self):
os.kill(self.sel_server_pid, signal.SIGTERM)
Cependant je reçois un message d'erreur lorsque cette fonction est appelée:
Traceback (most recent call last):
File "/usr/lib/python2.5/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
File "/home/commando/Development/Diploma/streaminatr/stream/selenium_tests.py", line 66, in stop
os.kill(self.sel_server_pid, signal.SIGTERM)
AttributeError: 'NoneType' object has no attribute 'kill'
On dirait que les modules os
et signal
sont déchargés avant l'appel de atexit
. Leur réimportation résout le problème, mais ce comportement me semble étrange - ces modules sont importés avant d'enregistrer mon gestionnaire, alors pourquoi sont-ils déchargés avant que mon propre gestionnaire de sortie ne fonctionne?