3131from sentry_sdk .utils import (
3232 filename_for_module ,
3333 handle_in_app_impl ,
34+ logger ,
3435 nanosecond_time ,
3536)
3637
9293 )
9394
9495
95- _sample_buffer = None # type: Optional[SampleBuffer]
9696_scheduler = None # type: Optional[Scheduler]
9797
9898
@@ -103,33 +103,33 @@ def setup_profiler(options):
103103 `buffer_secs` determines the max time a sample will be buffered for
104104 `frequency` determines the number of samples to take per second (Hz)
105105 """
106- buffer_secs = 30
107- frequency = 101
108106
109- if not PY33 :
110- from sentry_sdk .utils import logger
107+ global _scheduler
111108
112- logger .warn ("profiling is only supported on Python >= 3.3" )
109+ if _scheduler is not None :
110+ logger .debug ("profiling is already setup" )
113111 return
114112
115- global _sample_buffer
116- global _scheduler
113+ if not PY33 :
114+ logger .warn ("profiling is only supported on Python >= 3.3" )
115+ return
117116
118- assert _sample_buffer is None and _scheduler is None
117+ buffer_secs = 30
118+ frequency = 101
119119
120120 # To buffer samples for `buffer_secs` at `frequency` Hz, we need
121121 # a capcity of `buffer_secs * frequency`.
122- _sample_buffer = SampleBuffer (capacity = buffer_secs * frequency )
122+ buffer = SampleBuffer (capacity = buffer_secs * frequency )
123123
124124 profiler_mode = options ["_experiments" ].get ("profiler_mode" , SleepScheduler .mode )
125125 if profiler_mode == SigprofScheduler .mode :
126- _scheduler = SigprofScheduler (sample_buffer = _sample_buffer , frequency = frequency )
126+ _scheduler = SigprofScheduler (sample_buffer = buffer , frequency = frequency )
127127 elif profiler_mode == SigalrmScheduler .mode :
128- _scheduler = SigalrmScheduler (sample_buffer = _sample_buffer , frequency = frequency )
128+ _scheduler = SigalrmScheduler (sample_buffer = buffer , frequency = frequency )
129129 elif profiler_mode == SleepScheduler .mode :
130- _scheduler = SleepScheduler (sample_buffer = _sample_buffer , frequency = frequency )
130+ _scheduler = SleepScheduler (sample_buffer = buffer , frequency = frequency )
131131 elif profiler_mode == EventScheduler .mode :
132- _scheduler = EventScheduler (sample_buffer = _sample_buffer , frequency = frequency )
132+ _scheduler = EventScheduler (sample_buffer = buffer , frequency = frequency )
133133 else :
134134 raise ValueError ("Unknown profiler mode: {}" .format (profiler_mode ))
135135 _scheduler .setup ()
@@ -140,13 +140,11 @@ def setup_profiler(options):
140140def teardown_profiler ():
141141 # type: () -> None
142142
143- global _sample_buffer
144143 global _scheduler
145144
146145 if _scheduler is not None :
147146 _scheduler .teardown ()
148147
149- _sample_buffer = None
150148 _scheduler = None
151149
152150
@@ -728,7 +726,7 @@ def _should_profile(transaction, hub):
728726 return False
729727
730728 # The profiler hasn't been properly initialized.
731- if _sample_buffer is None or _scheduler is None :
729+ if _scheduler is None :
732730 return False
733731
734732 hub = hub or sentry_sdk .Hub .current
0 commit comments