MCPcopy
hub / github.com/benoitc/gunicorn / _signal_handler

Method _signal_handler

gunicorn/dirty/arbiter.py:280–336  ·  view source on GitHub ↗

Handle signals.

(self, sig, frame)

Source from the content-addressed store, hash-verified

278 signal.signal(signal.SIGTTOU, self._signal_handler)
279
280 def _signal_handler(self, sig, frame):
281 """Handle signals."""
282 if sig == signal.SIGCHLD:
283 # Child exited - will be handled in reap_workers
284 if self._loop:
285 self._loop.call_soon_threadsafe(
286 lambda: asyncio.create_task(self._handle_sigchld())
287 )
288 return
289
290 if sig == signal.SIGUSR1:
291 # Reopen log files
292 self.log.reopen_files()
293 return
294
295 if sig == signal.SIGHUP:
296 # Reload workers
297 if self._loop:
298 self._loop.call_soon_threadsafe(
299 lambda: asyncio.create_task(self.reload())
300 )
301 return
302
303 if sig == signal.SIGTTIN:
304 # Increase number of workers
305 self.num_workers += 1
306 self.log.info("SIGTTIN: Increasing dirty workers to %s",
307 self.num_workers)
308 if self._loop:
309 self._loop.call_soon_threadsafe(
310 lambda: asyncio.create_task(self.manage_workers())
311 )
312 return
313
314 if sig == signal.SIGTTOU:
315 # Decrease number of workers (respecting minimum)
316 min_workers = self._get_minimum_workers()
317 if self.num_workers <= min_workers:
318 self.log.warning(
319 "SIGTTOU: Cannot decrease below %s workers "
320 "(required by app specs)",
321 min_workers
322 )
323 return
324 self.num_workers -= 1
325 self.log.info("SIGTTOU: Decreasing dirty workers to %s",
326 self.num_workers)
327 if self._loop:
328 self._loop.call_soon_threadsafe(
329 lambda: asyncio.create_task(self.manage_workers())
330 )
331 return
332
333 # Shutdown signals
334 self.alive = False
335 if self._loop:
336 self._loop.call_soon_threadsafe(self._shutdown)
337

Calls 7

_handle_sigchldMethod · 0.95
reloadMethod · 0.95
manage_workersMethod · 0.95
_get_minimum_workersMethod · 0.95
reopen_filesMethod · 0.45
infoMethod · 0.45
warningMethod · 0.45