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)