code: def check_schedule(self, node, duration=0):
          
          if node.shutting_down:
              return
  
          if self.pending:
              # how many nodes do we have?
              num_nodes = len(self.node2pending)
              # if our node goes below a heuristic minimum, fill it out to
              # heuristic maximum
              items_per_node_min = max(2, len(self.pending) // num_nodes // 4)
              items_per_node_max = max(2, len(self.pending) // num_nodes // 2)
              node_pending = self.node2pending[node]
              if len(node_pending) < items_per_node_min:
                  if duration >= 0.1 and len(node_pending) >= 2:
                      # seems the node is doing long-running tests
                      # and has enough items to continue
                      # so let's rather wait with sending new items
                      return
                  num_send = items_per_node_max - len(node_pending)
                  self._send_tests(node, num_send)
          else:
              node.shutdown()
  
          self.log("num items waiting for node:", len(self.pending))
docs: Maybe schedule new items on the node
  
          If there are any globally pending nodes left then this will
          check if the given node should be given any more tests.  The
          ``duration`` of the last test is optionally used as a
          heuristic to influence how many tests the node is assigned.