登录
首页 >  Golang >  Go问答

如何避免在同步时调用“updateFunc”?

来源:stackoverflow

时间:2024-04-09 17:06:33 128浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《如何避免在同步时调用“updateFunc”?》,涉及到,有需要的可以收藏一下

问题内容

根据我的理解(和经验) - kubernetes informers 调用 updatefunc 其缓存的每个“同步”事件 - 据我所知,这是由于这种令人讨厌的代码和平。

告密者定义示例:

informer:= NewInformer(
&cache.ListWatch{
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
  return kubeClient.Batch().Jobs(api.NamespaceAll).List(options)
},
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
  return kubeClient.Batch().Jobs(api.NamespaceAll).Watch(options)
},....)

...

informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
    AddFunc: func(obj interface{}){},
    // Make this function be called *only* on update. 
    UpdateFunc: func(old, current interface{}){},
    DeleteFunc: func(current interface{}){},
})

但对于我的用例 - 调用 updatefunc 应该只在该资源更新时才会发生(例如,我在每次更新或进入 i/o 时进行一些密集的计算)。

我在想有没有办法只在更新时调用 updatefunc


解决方案


我找到了答案in this github issue

如果新旧资源版本不同,则会观察到实际更新事件。

今天关于《如何避免在同步时调用“updateFunc”?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>