Obtención de solicitud HTTP (descarga de archivo): la operación se agotó después de 60000 milisegundosEstimados,
Quiero importar un archivo csv desde un servidor interno ("http:....").
(JMP 14.0, Windows)
En general, funcionó bastante bien, pero el archivo es cada vez más grande.
Como necesito escanear el archivo completo (para obtener todos los tipos de datos correctos), pensé que sería una buena idea,
primero descargar el archivo al directorio $ TEMP y luego importarlo.
Así que implementé la descarga de archivos con solicitud http.
Para un archivo más pequeño, volvió a funcionar bien, pero para los más grandes obtuve un tiempo de espera,
y no encontré ninguna opción para decirle a JMP que cambie ese tiempo de espera,
excepto que podría cambiar el registro, consulte @aterrizar en el siguiente enlace:
https://community.jmp.com/message/225323
¿Descargar un archivo grande de http:... por "solicitud http" es el método correcto?
¿Existe otro método para modificar el tiempo de espera sin cambiar el registro (mi secuencia de comandos también debe funcionar con otros usuarios)?
¿La descarga antes de la importación (mediante el análisis completo) es más rápida que la importación directa desde el servidor?
Gracias y un saludo,
Jorge
Re: solicitud HTTP get (descarga de archivo): la operación se agotó después de 60000 milisegundosGracias Craig por la respuesta rápida,
su enfoque generalmente funciona y da resultados similares,
pero en las tablas de datos resultantes los tipos de datos son diferentes (debido al separador decimal, / .).
Entonces su información me ayuda a encontrar una manera de trabajar.
BR, Jorge
Re: solicitud HTTP get (descarga de archivo): la operación se agotó después de 60000 milisegundosLa solicitud HTTP tiene un mensaje de tiempo de espera.El valor predeterminado es 60 segundos.
Names Default To Here( 1 );
request = New HTTP Request(
Url( "https://community.jmp.com/html/assets/community-icons/community-icon-mastering.png" ),
Method( "GET" ),
Timeout( 120 )
);
bytes = request << Send;
img = Open( bytes, jpg );
obj = New Window( "Mastering JMP", img );
Re: solicitud HTTP get (descarga de archivo): la operación se agotó después de 60000 milisegundosEstoy bastante seguro de que JMP solo descarga el archivo una vez para abrir ("https...", escriba), incluso si el archivo debe escanearse más de una vez (cuando el tipo es "texto" para archivos csv). Creo que el archivo se guarda en la memoria para el caso de texto/csv, lo que limitará el tamaño máximo; para otros tipos, el archivo se puede guardar en un archivo temporal (el abridor de Excel podría necesidad para trabajar desde un archivo de disco, por ejemplo).
Por lo tanto, es posible que la descarga de csv a un archivo de disco sea más lenta (aunque probablemente no en una cantidad notable). Si el archivo CSV se acerca a la mitad del tamaño de su memoria (tamaño de archivo de 8 GB en una máquina de 16 GB... ¡la tabla JMP también necesitará memoria!), es posible que sea necesario descargarlo primero.
No estoy seguro de dónde ocurre el tiempo de espera, pero un enfoque alternativo para la descarga podría verse así:
// here's a way to download a URL to a local file
filename = Save Text File(
"$temp/sample.csv", // extension is saved as CSV
Load Text File(
"https://data.cityofnewyork.us/api/views/kku6-nxdu/rows.csv?accessType=DOWNLOAD",
blob
)
);
dt1 = Open( filename ); // "text" not needed because extension is CSV
// here's a way to open directly
dt2 = Open(
"https://data.cityofnewyork.us/api/views/kku6-nxdu/rows.csv?accessType=DOWNLOAD",
"text" // here the extension might or might not be CSV, use "text" to make sure
);
// verify both ways make the same table
compare = dt1 << Compare Data Tables(
Compare with( dt2 ),
Compare Data,
Show Difference Summary( 0 ),
Show Difference Plot( 0 )
);
If( compare << Are Data Different,
Write( "\!nwhy are they different?" ),
Write( "\!nResults identical" )
);
Show( N Rows( dt1 ), N Cols( dt1 ), N Rows( dt2 ), N Cols( dt2 ) );
// clean up
compare << closewindow;
Close( dt1, "nosave" );
Close( dt2, "nosave" );
@bryan_boone