前一段時間,我需要R中的一個retry
函數來處理緩慢的服務器響應。該功能將有以下行爲:(嘗試一個動作(函數或方法),如果失敗,稍等一會,然後重試)X10Python中的重試函數
我想出了以下內容:
retry <- function(fun, max_trys = 10, init = 0){
suppressWarnings(tryCatch({
Sys.sleep(0.3);
if(init<max_trys) {fun}
}, error=function(e){retry(fun, max_trys, init = init+1)}))}
它運作良好。現在我需要在Python3一樣的,所以我試圖做同樣的代碼:
import time
def retry_fun(fun, max_trys = 10, init=0):
try:
time.sleep(0.3)
if(init<max_trys):
fun
except:
retry_fun(fun, max_trys, init = init+1)
但是當我運行它,它崩潰我的內核。由於我在Python中是一個初學者,我不確定是什麼導致了崩潰,以及如果/如何將一個函數作爲參數傳遞給另一個函數。
你能幫我嗎?
你可以像這樣傳遞函數作爲參數,但是你應該像'fun()'那樣調用它。 – Archimaredes