- 在平台開發過程中,當有些執行完某些操作後,可能還需要等待直到某個條件滿足的時候
- 比如在cmdb刪除了乙個專案,cmdb需要一直等待其他系統資源**完,才能在自身徹底釋放對應的資源, 那就需要一直在**等待
今天主要是乙個關於定時輪訓、等待的工具方法實現
package wait
import (
"errors"
"math/rand"
"time"
)// jitter 允許時間在一定範圍內的波動
func jitter(duration time.duration, maxfactor float64) time.duration
wait := duration + time.duration(rand.float64()*maxfactor*float64(duration))
return wait
}// resetreusetimer 重置timer
func resetreusetimer(t *time.timer, d time.duration, sawtimeout bool) *time.timer
if !t.stop() && !sawtimeout
t.reset(d)
return t
}// handlercrash 控制失敗異常
func handlercrash()
// jitterutil 週期排程函式執行
func jitterutil(f func(), period time.duration, jitte***ctor float64, sliding bool, stopch
struct{})
jitteredperiod := period
if jitte***ctor >0.0
if !sliding
func() ()
if sliding
select
}}// util 是封裝的jitterutil並提供了jitte***ctor和sliding的預設值
func util(f func(), period time.duration, stopch
struct{})
// waiterfunc 等待某個函式執行
type waitfunc func(done
struct{})
struct{}
// conditionfunc 等待函式條件唄滿足
type conditionfunc func() (done bool, err error)
var errwaittimeout = errors.new("timed out waiting for the condition")
// waitfor 執行某個函式活著某個條件唄滿足
func waitfor(wait waitfunc, fn conditionfunc, done
struct{}) error
if ok
if !open
}return errwaittimeout
}func poller(interval, timeout time.duration) waitfunc )
struct{} )
gofunc()
for {}:
default:
}case
return
case
return}}
}()return ch
})}// pollinternal
func pollinternal(wait waitfunc, condition conditionfunc) error )
defer
close(done)
return waitfor(wait, condition, done)
}// poll 提供對外統一的介面
func poll(interval, timeout time.duration, condition conditionfunc) error
**都比較簡單, 但在k8s裡面很多資源更新方法裡面,都使用了這些函式, 比如job的更新裡面
// updatejobfunc updates the job object. it retries if there is a conflict, throw out error if
// there is any other errors. name is the job name, updatefn is the function updating the
// job object.
func updatejobfunc(c clientset.inte***ce, ns, name string, updatefn func(job *batch.job))
updatefn(job)
_, err = updatejob(c, ns, job)
if err == nil
if errors.isconflict(err)
return
false, fmt.errorf("failed to update job %q: %v", name, err)
}))}
今天寫的比較簡單,都是晚上回來看的,白天還藥做平台開發,今天就這樣吧 形容等待時間長的句子 描寫等待時間漫長的詞語句子
等待句子 魚沈雁杳天涯路,始信人間別離苦。君當作磐石,妾當作蒲葦。蒲葦韌如絲,磐石無轉移。在天願作比翼鳥,在地願為連理枝。有美人兮,見之不忘,一日不見兮,思之如狂。衣帶漸寬終不悔,為伊消得人憔悴。必須如蜜蜂一樣,採過許多花,才能釀出蜜來。春蠶到死絲方盡,蠟炬成灰淚始乾。人生自是有情痴,此恨不關風與月...
形容等待時間長的句子 形容等待時間漫長的勵志名句
等待時間漫長的名言 1 等待之路需要與笑容攜手,只有樂觀地面對失敗,在等待的成功的路上越挫越勇,希望之火才會為你點燃。2 等待,如同企鵝登陸前的蓄勢,默默沉潛只為騰空而起劃出一道完美的弧線 等待,好似曇花一現前的醞釀,敲碎季節的容顏只為在清輝下吐出一抹芬芳 等待,恰若春暖花開前的冬眠,忍受寒風凜冽只...
形容等待時間長的句子 形容等待時間長的句子
七 心三十,淡淡的斑斕在期待那。愛由於心的凍結而死去雪卻凍結著心的跳動 冷暖自知 自始自終 自力更生二十 七 我一小我逛逛停停 在期待什麼我不曉得我,麼在期待著我就像不曉得什。就是備胎 六 備胎,多年的期待乙個交接一句不愛就能夠給你。有握住最想要牽的手若是從一起頭就沒,為不竭的尋找和遷就錯過的歲月就...