Best Practices für die Umsetzung von Fristen und Wiederholungen für GRPC [geschlossen]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Best Practices für die Umsetzung von Fristen und Wiederholungen für GRPC [geschlossen]

Post by Anonymous »

Ich arbeite an einem älteren GRPC -Code und bin neu im Raum. Der Server hat einige Probleme, auf Anfragen vor Ablauf der Frist zu reagieren (Zeitüberschreitung) und ich versuche, das Problem aufzuspüren.
Hier sind einige der Protokolle, die ich habe:
[CLIENT] Sending request for requestId:8760 at 18:34:08.923
[CLIENT] Deadline for requestId:8760 is 18:34:11.923
[CLIENT] Sending requestId:8760 for Method: Send
[SERVER] 18:34:08.924 Received requestId:8760
[CLIENT] requestId:8760 has failed due to RpcException Grpc.Core.RpcException: Status(StatusCode="DeadlineExceeded")

[CLIENT] Sending request for requestId:8760 at 18:34:11.941
[CLIENT] Deadline for requestId:8760 is 18:34:11.923
[CLIENT] Sending requestId:8760 for Method: Send
[CLIENT] requestId:8760 has failed due to RpcException Grpc.Core.RpcException: Status(StatusCode="DeadlineExceeded")

[CLIENT] Sending request for requestId:8760 at 18:34:11.941
[CLIENT] Deadline for requestId:8760 is 18:34:11.923
[CLIENT] Sending requestId:8760 for Method: Send
[CLIENT] requestId:8760 has failed due to RpcException Grpc.Core.RpcException: Status(StatusCode="DeadlineExceeded")

[CLIENT] Sending request for requestId:8760 at 18:34:11.941
[CLIENT] Deadline for requestId:8760 is 18:34:11.923
[CLIENT] Sending requestId:8760 for Method: Send
[CLIENT] requestId:8760 has failed due to RpcException Grpc.Core.RpcException: Status(StatusCode="DeadlineExceeded")

[CLIENT] Sending request for requestId:8760 at 18:34:11.941
[CLIENT] Deadline for requestId:8760 is 18:34:11.923
[CLIENT] Sending requestId:8760 for Method: Send
[CLIENT] requestId:8760 has failed due to RpcException Grpc.Core.RpcException: Status(StatusCode="DeadlineExceeded")

[CLIENT] Received response for requestId:8760 for ProcessResult in 3018 ms after 5 retries [Status(StatusCode="DeadlineExceeded")]
[CLIENT] Request FAILED for requestId:8760 for ProcessResult in 3018 ms after 5 retries. Failure: Status(StatusCode="DeadlineExceeded")

[SERVER] 18:34:13.075 Received request for requestId:8760
[SERVER] 18:34:13.075 Returning response (status: RanToCompletion) for requestId:8760
[SERVER] 18:34:13.075 Sent response for requestId:8760, process took 0 ms
< /code>
Wie Sie sehen können, erhält ein Teil des Servers angeblich die Anfrage sofort, aber sie sendet die Antwort viel später zurück (obwohl angeblich im Grunde genommen keine Zeit dauert, es zu verarbeiten). In meiner Frage geht es jedoch mehr um Fristen und Wiederholungen: Die Anfrage wird insgesamt 5 Mal ausprobiert, aber selbst der zweite Versuch passiert bei ... 11.941 - bereits nach der Frist von 11,923. < /P>
Wenn wir uns den Code ansehen, setzen wir die Frist nur einmal und machen dann die Frist erneut an: < /p>
">">CallOptions options = new CallOptions(deadline: DateTime.UtcNow.AddMilliseconds(3000))
.WithWaitForReady(true).WithHeaders(new Metadata
{
{ "req_id", requestId },
});

int numOfRetry
while (numOfRetry < 5 && Channel.State != ChannelState.Shutdown)
{
try
{
Logger.Debug($"Sending request for requestId:{requestId} at {DateTime.UtcNow:HH:mm:ss.fff}");
Logger.Debug($"Deadline for requestId:{requestId} is {options.Deadline:HH:mm:ss.fff}");

var response = await client.SendAsync(new MessageRequest(), options);

Logger.Debug($"Received response for requestId:{requestId} at {DateTime.UtcNow:HH:mm:ss.fff}");
return new Result(response, State.Succeeded, reqId, numOfRetry);
}
catch (RpcException e)
{
Logger.Debug($"requestId:{requestId} has failed due to RpcException {e}");
Logger.Error(e.Message);
return new Result(State.Cancelled, requestId, numOfRetry, new Failure(e.Message));
}
/*Other catches are here*/
finally
{
numOfRetry++;
}
}
< /code>
Ich kann Dokumentation zu Termine und Wiederholungen in GRPC finden, aber ich kann die folgenden Fragen nicht beantworten: < /p>

Sollte eine Frist als "global" angesehen werden (über alle Wiederholungen hinweg) oder sollte sie für jede Anfrage neu berechnet werden? Schleife, aber hat Grpc.core eine integrierte Art und Weise, um Wiederholungen zu bearbeiten, die besser sein könnten?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post