Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

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
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.