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