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

Method manage_workers

gunicorn/arbiter.py:655–685  ·  view source on GitHub ↗

\ Maintain the number of workers by spawning or killing as required.

(self)

Source from the content-addressed store, hash-verified

653 raise
654
655 def manage_workers(self):
656 """\
657 Maintain the number of workers by spawning or killing
658 as required.
659 """
660 if len(self.WORKERS) < self.num_workers:
661 self.spawn_workers()
662
663 workers = self.WORKERS.items()
664 workers = sorted(workers, key=lambda w: w[1].age)
665 while len(workers) > self.num_workers:
666 (pid, _) = workers.pop(0)
667 self.kill_worker(pid, signal.SIGTERM)
668
669 active_worker_count = len(workers)
670 if self._last_logged_active_worker_count != active_worker_count:
671 self._last_logged_active_worker_count = active_worker_count
672 self.log.debug("{0} workers".format(active_worker_count),
673 extra={"metric": "gunicorn.workers",
674 "value": active_worker_count,
675 "mtype": "gauge"})
676
677 if self.cfg.enable_backlog_metric:
678 backlog = sum(sock.get_backlog() or 0
679 for sock in self.LISTENERS)
680
681 if backlog >= 0:
682 self.log.debug("socket backlog: {0}".format(backlog),
683 extra={"metric": "gunicorn.backlog",
684 "value": backlog,
685 "mtype": "histogram"})
686
687 def spawn_worker(self):
688 self.worker_age += 1

Callers 4

runMethod · 0.95
handle_ttinMethod · 0.95
handle_ttouMethod · 0.95
reloadMethod · 0.95

Calls 5

spawn_workersMethod · 0.95
kill_workerMethod · 0.95
itemsMethod · 0.80
debugMethod · 0.45
get_backlogMethod · 0.45

Tested by

no test coverage detected