Wie implementiere ich einen asynchronen Grpc-Python-Server?

Ich muss für jede GRPC-Anforderung eine Sellerie-Task aufrufen und das Ergebnis zurückgeben. In der GRPC-Standardimplementierung wird jede Anforderung in einem separaten Thread von einem Threadpool verarbeitet.

In meinem Fall soll der Server ~ 400 Anfragen im Batch-Modus pro Sekunde verarbeiten. Daher muss eine Anforderung aufgrund der Stapelverarbeitung möglicherweise 1 Sekunde auf das Ergebnis warten. Dies bedeutet, dass der Threadpool größer als 400 sein muss, um ein Blockieren zu vermeiden.

Kann das asynchron gemacht werden? Danke vielmals

class EventReporting(ss_pb2.BetaEventReportingServicer, ss_pb2.BetaDeviceMgtServicer):
  def ReportEvent(self, request, context):
    res = tasks.add.delay(1,2)
    result = res.get() ->here i have to block
    return ss_pb2.GeneralReply(message='Hello, %s!' % result.message)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage