Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
Free Trial

Foro

RESUELTAS

Problemas para importar archivo de la web

lhuber
Asteroide

Buen Día, 

                  Los molesto porque esty teniendo problemas para importar un archivo desde una pagina web.

 

El Sitio Web de donde necesito bajar el archivo de historicos de precios del Azucar es https://www.cactutucuman.com/servicios

 

El link del archivo a importar (HIST AZÚCAR 16-03-2022.xlsx) es el sigiente:

 

https://ce1bcb12-da6c-4342-b0f2-bdf8adf57112.filesusr.com/ugd/fbfb61_8f6f3592e8fb42d79c3b218d4d1acd4...

 

Este archivo se actializa diariamente, si reemplazo el final del link la fecha por " * ", haciendolo manualmente desde el navegador me lo importa a mi maquina sin problema.

https://ce1bcb12-da6c-4342-b0f2-bdf8adf57112.filesusr.com/ugd/fbfb61_8f6f3592e8fb42d79c3b218d4d1acd4...

 

el problema se me da cuando intento hacer esta bajada desde un flujo de Alteryx, el error que me da es "Error al transferir datos:faliure when receiving data from the peer"

 

adjunto las pantallas de error y el flujo.

 

Desde ya mil gracias a quien me pueda dar una mano

 

13 RESPUESTAS 13
Aguisande
15 - Aurora
15 - Aurora

Hola @lhuber 

Yo intenté desde mi máquina, y me funcionó perfecto, luego de hacer un cambio en la forma de componer la URL.

Aguisande_0-1647534650578.png

 

El cambio que hice fue separar la parte fija de la URL (todo lo que está antes del "?") y el parámetro (Todo lo que está después del "?")

Fijate que la columna se llama se llama igual al parámetro (dn)

Aguisande_1-1647534727995.png

 

El otro cambio que hice, fue ajustar el Payload del download tool, para que arme dinámicamente la url (Parte fija + ? + nombre del parámetro seleccionado + valor del parámetro seleccionado). Esto se logra seleccionando la columna respectiva, como se puede ver en el print de pantalla.

Aguisande_2-1647534837796.png

 

Incluso funciona usando * como parámetro del dn=

Aguisande_3-1647535071666.png

 

 

Probá esto y avisame cómo te fue.

Saludos

lhuber
Asteroide

Hola @Aguisande  , buen día,  no estoy entendiendo la parte que mencionas del payload, en concreto no se donde concatenar el download tool, para que arme dinámicamente la url (Parte fija + ? + nombre del parámetro seleccionado + valor del parámetro seleccionado). 

Aguisande
15 - Aurora
15 - Aurora

hola @lhuber 

Si te fijás en el print screen de la herramienta Download vas a ver que en el Tab de Payload, está seleccionado "Compose Query String/Body" y que debajo, la columna [dn] está seleccionada.

Esto hace que Alteryx agregue a lo que tengas en URL, los parámetros adicionales en base a tu selección 

 

En este caso tenemos estos datos que vienen del Text Input:

Aguisande_1-1647611688718.png

 

O sea que el request del Download tool quedaría así:

[URL] +"?dn="+[dn]

(NOTA: La parte de "?dn=" la agrega Alteryx automáticamente, porque "?" representa el inicio de una cadena de parámetros y "dn=" porque está seleccionado el campo [dn] como parámetero en el box que dice "And values from this fields". Si hubiera más de uno seleccionado, Alteryx también agregaría el símblo "&" que es el que se usapara concatenar parámetros.

 

Aguisande_0-1647611302518.png

 

Como Alteryx maneja registro a registro, esto te permite tener la cantidad que quieras de URLs e ir haciendo un request línea a línea.

 

 

grchavarri
Bólido

Buenas @lhuber 

 

En principio lo que tienes montado tiene buena pinta y a mi me funciona si solamente haces una request.

Ese error que mencionas suele ser por varios motivos, principalmente suele pasar porque la request llega a timeout o porque esa llamada no ha podido conectar con el servidor. 

Si haces muchas requests seguidas, puede ser que alguna te falle por el camino y por tanto te destroza las llamadas que vienen después de la que te da el fallo. Para que esto no se produzca, te recomiendo que utilices una batch macro ( si no sabes como hacerlo, yo te ayudo ) para ejecutar cada request de una en una y si alguna te da error, no te complica las demás. 

 

Adiconalmente a esto, yo te recomiendo, que añadas un header (user-agent) como buenas practicas en el download, para hacer la request "como si fueses" un browser tipo chrome. Te adjunto imagen: 

 

grchavarri_0-1647534993092.png

Si usas un chrome o parecido, pon este contenido en el user-agent:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36

 

 

Espero que con esto soluciones tu problema, cuéntame cuando pruebes.

 

Saludos,

 

grchavarri
Bólido

@lhuber Te adjunto la foto con el 200 OK de la llamada con el * y el user-agent, en principio debería funcionarte correctamente. 

grchavarri_1-1647535344865.png

 

Aguisande
15 - Aurora
15 - Aurora

@grchavarri 

Con múltiples downloads también funciona sin problemas. Para ese caso, lo que recomiendo es que se construya con una fórmula, el nombre del archivo a guardar de forma que cada archivo descargado, pueda guardarse en su correspondiente copia en el disco local, sin sobreescribir alguno de ellos.

Recuerden que Alteryx maneja los datos registro a registro.

Aguisande_0-1647539804892.png

 

grchavarri
Bólido

Claro @Aguisande pero al hacer múltiples llamadas, la posibilidad de error hace que te estropee las siguientes llamadas en la cola. Lo malo de hacer llamadas con el download de forma mas "masiva" es que si falla una, todas las siguientes no funcionan y por tanto esos archivos no se bajarian. Es como si la maquina se quedase ahi "trabada"

Aguisande
15 - Aurora
15 - Aurora

Dependiendo de cómo tengas configurada la infraestructura y los "tweaks" al Download Tool.

En el tab Connection del download Tool, puedes configurar la herramienta para prevenir muchos de estos tipos de problemas, aunque si el servidor no responde o se cae, igual vas a pasar por ello.

 

Igualmente, lo recomendable para estos casos, es utilizar algún mecanismo que chequee si el archivo ya fue descargado previo a hacer el request, de modo que tu mismo WF maneje el estado de los requests, y no haga requests innecesarios (una especie de "máquina de estado"). Yo suelo utilizar una macro para esto.

 

lhuber
Asteroide

lo raro es que probé con otro flujo similar  que baja las cotizaciones de la **bleep** desde este link (https://www.magyp.gob.ar/sitio/areas/ss_lecheria/estadisticas/_03_precios/_archivos/PR026.xlsx)  y no tiene problema, voy a seguir dándole una par de vueltas mas a este asunto a ver que puede ser.

 

 

Muchas Gracias por todo lo que me enseñan !!

Etiquetas