cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
gaccardo-slb
Advocate II
Advocate II

Cómo evitar HTTP 502/503 al acceder a una API REST

Estamos leyendo datos de una API REST. El proceso es bastante común: haga una llamada para obtener una lista de identificadores y, a continuación, realice una o varias llamadas para que cada ID obtenga los detalles. Para un conjunto de datos pequeño, todo funciona bien. Con un gran número de IDs, el número de llamadas REST que llegan al servidor de forma simulada es extremadamente alto. Esto hace que el servidor devuelva errores 502/503 y se produzca un error en la carga de datos.

Con otros lenguajes, una solución típica es realizar las llamadas secuencialmente en lugar de en paralelo, o limitar la velocidad de las llamadas de alguna manera. Reduce la avalancha de solicitudes al servidor y permite al servidor responder a las solicitudes en lugar de rechazarlas. ¿Hay alguna manera de lograr esto con Power Query?

saludos

G

1 ACCEPTED SOLUTION
PhilipTreacy
Super User
Super User

Hola @gaccardo-slb

Puede usar Function.InvokeAfter para introducir un retraso entre las solicitudes. Este código tiene un retraso de 2 segundos entre las solicitudes web

let
    id_list = {1 .. 5},
    GetWeb = (id) => Json.Document(Web.Contents("https://jsonplaceholder.typicode.com/todos/" & Text.From(id))),
    Output = List.Transform(id_list, each Function.InvokeAfter( ()=>GetWeb(_), #duration(0,0,0,2)))    
in
    Output

saludos

Phil


Si respondí a su pregunta por favor marque mi post como la solución.
Si mi respuesta ayudó a resolver su problema, déle un kudos haciendo clic en Thumbs Up.



Did I answer your question? Then please mark my post as the solution.
If I helped you, click on the Thumbs Up to give Kudos.


Blog :: YouTube Channel :: Connect on Linkedin


Proud to be a Super User!


View solution in original post

2 REPLIES 2
PhilipTreacy
Super User
Super User

Hola @gaccardo-slb

Puede usar Function.InvokeAfter para introducir un retraso entre las solicitudes. Este código tiene un retraso de 2 segundos entre las solicitudes web

let
    id_list = {1 .. 5},
    GetWeb = (id) => Json.Document(Web.Contents("https://jsonplaceholder.typicode.com/todos/" & Text.From(id))),
    Output = List.Transform(id_list, each Function.InvokeAfter( ()=>GetWeb(_), #duration(0,0,0,2)))    
in
    Output

saludos

Phil


Si respondí a su pregunta por favor marque mi post como la solución.
Si mi respuesta ayudó a resolver su problema, déle un kudos haciendo clic en Thumbs Up.



Did I answer your question? Then please mark my post as the solution.
If I helped you, click on the Thumbs Up to give Kudos.


Blog :: YouTube Channel :: Connect on Linkedin


Proud to be a Super User!


¡Hermosa!

Helpful resources

Announcements
Carousel_PBI_Wave1

2023 Release Wave 1 Plans

Power BI release plans for 2023 release wave 1 describes all new features releasing from April 2023 through September 2023.

Power BI Summit Carousel 2

Global Power BI Training

Make sure you register today for the Power BI Summit 2023. Don't miss all of the great sessions and speakers!

Thank you 2022 Review

2022 Monthly Feature Releases

We had a great 2022 with a ton of feature releases to help you drive a data culture.