MCPcopy Index your code
hub / github.com/apache/tvm / TrackerServerHandler

Class TrackerServerHandler

python/tvm/rpc/tracker.py:326–397  ·  view source on GitHub ↗

Tracker that tracks the resources.

Source from the content-addressed store, hash-verified

324
325
326class TrackerServerHandler:
327 """Tracker that tracks the resources."""
328
329 def __init__(self, sock, stop_key):
330 self._scheduler_map = {}
331 self._sock = sock
332 self._sock.setblocking(0)
333 self._ioloop = ioloop.IOLoop.current()
334 self._stop_key = stop_key
335 self._connections = set()
336
337 def _event_handler(_, events):
338 self._on_event(events)
339
340 self._ioloop.add_handler(self._sock.fileno(), _event_handler, self._ioloop.READ)
341
342 def _on_event(self, _):
343 while True:
344 try:
345 conn, addr = self._sock.accept()
346 TCPEventHandler(self, conn, addr)
347 except OSError as err:
348 if err.args[0] in (errno.EAGAIN, errno.EWOULDBLOCK):
349 break
350
351 def create_scheduler(self, key):
352 """Create a new scheduler."""
353 return PriorityScheduler(key)
354
355 def put(self, key, value):
356 """Report a new resource to the tracker."""
357 if key not in self._scheduler_map:
358 self._scheduler_map[key] = self.create_scheduler(key)
359 self._scheduler_map[key].put(value)
360
361 def request(self, key, user, priority, callback):
362 """Request a new resource."""
363 if key not in self._scheduler_map:
364 self._scheduler_map[key] = self.create_scheduler(key)
365 self._scheduler_map[key].request(user, priority, callback)
366
367 def close(self, conn):
368 self._connections.remove(conn)
369 if "key" in conn._info:
370 for value in conn.put_values:
371 _, _, _, key = value
372 rpc_key, _ = base.split_random_key(key)
373 self._scheduler_map[rpc_key].remove(value)
374
375 def stop(self):
376 """Safely stop tracker."""
377 for conn in list(self._connections):
378 conn.close()
379 self._sock.close()
380 self._ioloop.stop()
381
382 def summary(self):
383 """Return a dict summarizing current status."""

Callers 1

_tracker_serverFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…