[Serve] Implement metric interface (#5852)

* Implement metric interface

* Address comment: made actor_handles a dict

* Fix iteration

* Lint

* Mark lightweight actors as num_cpus=0 to prevent resource starvation

* Be more explicit about the readiness condition

* Make task_runner non-blocking

* Lint
This commit is contained in:
Simon Mo
2019-10-07 09:29:26 -07:00
committed by GitHub
parent 25dde48607
commit 9bb3633cd9
10 changed files with 347 additions and 12 deletions
+12
View File
@@ -76,6 +76,18 @@ class CentralizedQueues:
# backend_name -> worker queue
self.workers = defaultdict(deque)
def is_ready(self):
return True
def _serve_metric(self):
return {
"service_{}_queue_size".format(service_name): {
"value": len(queue),
"type": "counter",
}
for service_name, queue in self.queues.items()
}
def enqueue_request(self, service, request_args, request_kwargs,
request_context):
query = Query(request_args, request_kwargs, request_context)