HTTP请求get(文件下载):操作在60000毫秒后超时各位,
我想从内部服务器(“http:....”)导入 csv 文件。
(JMP 14.0,Windows)
它通常工作得很好,但文件变得越来越大。
由于我需要扫描整个文件(以正确获取所有数据类型),我想,这将是一个好主意,
首先将文件下载到 $TEMP 目录,然后导入它。
所以我用http请求实现了文件下载。
对于较小的文件,它再次运行良好,但对于较大的文件,我会超时,
我找不到告诉 JMP 更改超时的选项,
除了我可以更改注册表之外,请参阅@落在在以下链接中:
https://community.jmp.com/message/225323
通过“http 请求”从 http:... 下载大文件是正确的方法吗?
是否有另一种方法可以在不更改注册表的情况下修改超时(我的脚本也需要在其他用户上工作)?
导入前下载(使用完整扫描)是否比直接从服务器导入更快?
谢谢并致以最诚挚的问候,
格奥尔格
回复:HTTP 请求 get(文件下载):操作在 60000 毫秒后超时感谢克雷格的快速回复,
你的方法通常有效并给出类似的结果,
但在结果数据表中,数据类型不同(由于小数分隔符 , / .)。
所以你的信息帮助我找到了工作方式。
BR,乔治
回复:HTTP 请求 get(文件下载):操作在 60000 毫秒后超时HTTP 请求有超时消息。默认值为 60 秒。
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 );
回复:HTTP 请求 get(文件下载):操作在 60000 毫秒后超时我很确定 JMP 只下载一次文件以打开(“https...”,类型),即使文件需要扫描多次(当 csv 文件的类型为“文本”时)。 我认为对于 text/csv 情况,文件保存在内存中,这将限制最大大小;对于其他类型,文件可能会保存到临时文件(Excel 打开程序可能会需要例如,从磁盘文件工作)。
因此,将 csv 下载到磁盘文件可能会更慢(但速度可能不会很明显)。 如果 CSV 文件接近内存大小的一半(16GB 计算机上的文件大小为 8GB...JMP 表也需要内存!),可能需要先下载它。
不确定超时发生在哪里,但另一种下载方法可能如下所示:
// 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