Condições de parada e retry.
This commit is contained in:
parent
e6ce1ba938
commit
a170168f21
34
Program.cs
34
Program.cs
@ -145,16 +145,38 @@ internal class Plat_integ
|
|||||||
using var response = await client.PostAsync(endpoint, conteudo, ct);
|
using var response = await client.PostAsync(endpoint, conteudo, ct);
|
||||||
string resposta = await response.Content.ReadAsStringAsync();
|
string resposta = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
if ((int)response.StatusCode == 429) // limite da API
|
if ((int)response.StatusCode >= 400)
|
||||||
{
|
{
|
||||||
Console.WriteLine("⚠️ Limite de requisições atingido. Aguardando próximo minuto...");
|
try
|
||||||
|
{
|
||||||
|
VerificarRespostaSOAP(resposta);
|
||||||
|
}
|
||||||
|
catch (SoapFaultException ex)
|
||||||
|
{
|
||||||
|
if (ex.ErrorCode == "2003") // limite de requisições
|
||||||
|
{
|
||||||
var now = DateTime.UtcNow;
|
var now = DateTime.UtcNow;
|
||||||
var delay = 60000 - (now.Second * 1000 + now.Millisecond);
|
var delay = 60000 - (now.Second * 1000 + now.Millisecond);
|
||||||
await Task.Delay(delay, ct);
|
Console.WriteLine($"!! Limite de requisições atingido. Aguardando até {DateTime.Now.AddMilliseconds(delay)}");
|
||||||
continue; // tentar de novo sem contar como falha
|
await Task.Delay(delay, ct); // tentar de novo sem contar como falha
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
if (ex.ErrorCode == "4001") // Dados não encontrados
|
||||||
response.EnsureSuccessStatusCode();
|
{
|
||||||
|
errosPersistentes.Add($"{perfil._Cod_5min};{perfil._Codigo_SCDE};SOAP Fault: {ex.ErrorCode};{ex.ErrorMessage.Replace("\n", "-n-")}");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (ex.ErrorCode == "2001") // Sem acesso
|
||||||
|
{
|
||||||
|
errosPersistentes.Add($"{perfil._Cod_5min};{perfil._Codigo_SCDE};SOAP Fault: {ex.ErrorCode};{ex.ErrorMessage.Replace("\n", "-n-")}");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
string resposta = await response.Content.ReadAsStringAsync(ct);
|
string resposta = await response.Content.ReadAsStringAsync(ct);
|
||||||
await ProcessarXMLAsync(resposta, await dataSource.OpenConnectionAsync());
|
await ProcessarXMLAsync(resposta, await dataSource.OpenConnectionAsync());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user