2013-05-03 58 views
0

今天我遇到了一個問題,一個掛載過時,這導致我的整個python應用程序無限期掛起。Python安裝時掛着陳舊的安裝。建議?

發生了什麼事情是掛載過時,然後我在該路徑上撥打os.path.exists(path)。電話無限期地掛起。

我真的很需要防止這種情況。我唯一的想法是將os.path.exists調用放在後臺線程上,並在超時秒數後仍然有效時突然終止線程(顯然不是首選)。理想情況下,我會通過打電話來檢查掛載是否先陳舊。

任何想法?僅供參考,所有嘗試訪問此路徑的呼叫都會掛起,包括os.path.ismount(path)。雖然這是一件罕見的事情,但我不能讓整個系統凍結在用戶身上:/。

+0

我已經看到了一些自定義的文件系統中,這個行爲(保險絲等)。它看起來更像是一個文件系統實現的問題,在內核請求時停止提供答案。我會將問題重新標記爲Linux,Kernel(如果適用)。 – 2013-05-04 08:56:57

+0

這是在ubuntu上安裝一個遠程centOS驅動器(我相信nfs)。沒有奇怪的文件系統。我們目前正在嘗試「軟」nfs安裝選項,但尚未遇到尚未陳舊的測試。 – user1777820 2013-05-07 18:49:49

回答

0

您可以使用Python子模塊和外殼「超時」命令來檢測焊割安裝:

call = subprocess.Popen(["timeout 10 ls /your_mount_dir/ &> /dev/null; echo $?"], stdout=subprocess.PIPE, shell=True) 
output = call.communicate() 
result = output[0].strip() 
if result != '0': 
    # Mount is hung.