99import os
1010import signal
1111import atexit
12+ import platform
1213
13- from .runtime import min_version , runtime_info
14+ from .runtime import min_version , runtime_info , register_signal
1415from .utils import timestamp , generate_uuid
1516from .config import Config
1617from .config_loader import ConfigLoader
2526
2627class Agent :
2728
28- AGENT_VERSION = "1.0.0 "
29+ AGENT_VERSION = "1.0.1 "
2930 SAAS_DASHBOARD_ADDRESS = "https://agent-api.stackimpact.com"
3031
3132 def __init__ (self , ** kwargs ):
@@ -62,6 +63,9 @@ def start(self, **kwargs):
6263 if not min_version (2 , 7 ) and not min_version (3 , 4 ):
6364 raise Exception ('Supported Python versions 2.6 or highter and 3.4 or higher' )
6465
66+ if platform .python_implementation () != 'CPython' :
67+ raise Exception ('Supported Python interpreter is CPython' )
68+
6569 if self .agent_destroyed :
6670 self .log ('Destroyed agent cannot be started' )
6771 return
@@ -106,10 +110,12 @@ def _signal_handler(signum, frame):
106110 except Exception :
107111 self .exception ()
108112
109- signal .signal (signal .SIGUSR2 , _signal_handler )
113+ return True
114+
115+ register_signal (signal .SIGUSR2 , _signal_handler )
110116
111117 # destroy agent on exit
112- def _exit ( ):
118+ def _exit_handler ( * arg ):
113119 if not self .agent_started or self .agent_destroyed :
114120 return
115121
@@ -120,7 +126,12 @@ def _exit():
120126 self .exception ()
121127
122128
123- atexit .register (_exit )
129+ atexit .register (_exit_handler )
130+
131+ register_signal (signal .SIGQUIT , _exit_handler )
132+ register_signal (signal .SIGINT , _exit_handler )
133+ register_signal (signal .SIGTERM , _exit_handler )
134+ register_signal (signal .SIGHUP , _exit_handler )
124135
125136 self .agent_started = True
126137 self .log ('Agent started' )
0 commit comments