首页 > 其他分享 >k8s限速队列不通过Get方法判断队列是否关闭

k8s限速队列不通过Get方法判断队列是否关闭

时间:2023-12-28 21:11:19浏览次数:36  
标签:Get 队列 ShuttingDown queue1 io go k8s

go.mod

module use-k8s-queue

go 1.19

require k8s.io/client-go v0.28.2

require (
	github.com/go-logr/logr v1.2.4 // indirect
	golang.org/x/time v0.3.0 // indirect
	k8s.io/apimachinery v0.28.2 // indirect
	k8s.io/klog/v2 v2.100.1 // indirect
	k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
)

// k8s.io/api => k8s.io/api v0.0.0-20230915221828-1cac0b1ef7e3
replace k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20230915221524-64708d3e9048

main.go

package main

import (
	"fmt"

	"k8s.io/client-go/util/workqueue"
)

func main() {
	queue1 := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
	queue1.Add("test")
	queue1.ShutDown()
	_, shutdown1 := queue1.Get()
	if shutdown1 {
		fmt.Println("queue1 has shutdown by Get check")
	}
	if queue1.ShuttingDown() {
		fmt.Println("queue1 has shutdown by ShuttingDown check")
	}

	queue2 := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
	queue2.ShutDown()
	_, shutdown2 := queue1.Get()
	if shutdown2 {
		fmt.Println("queue2 has shutdown by Get check")
	}
	if queue2.ShuttingDown() {
		fmt.Println("queue2 has shutdown by ShuttingDown check")
	}
}

queue1在Get时还有元素,认为没有关闭,需要ShuttingDown方法才能认为已关闭。
queue2在Get时没有元素,认为已关闭,ShuttingDown方法依然认为已关闭。
不管是否有元素,ShuttingDown方法是判断队列是否关闭的正确方式。

标签:Get,队列,ShuttingDown,queue1,io,go,k8s
From: https://www.cnblogs.com/WJQ2017/p/17933588.html

相关文章

  • 关于 K8s 的一些基础概念整理
    〇、前言Kubernetes,将中间八个字母用数字8替换掉简称k8s,是一个开源的容器集群管理系统,由谷歌开发并维护。它为跨主机的容器化应用提供资源调度、服务发现、高可用管理和弹性伸缩等功能。下面简单列一下k8s的几个特性:自动化部署:Kubernetes可以根据应用程序计算资源需求自......
  • 通达OA 任意文件上传+文件包含 getshell
    漏洞影响版本通达OAV11版<=11.320200103通达OA2017版<=10.1920190522通达OA2016版<=9.1320170710通达OA2015版<=8.1520160722通达OA2013增强版<=7.2520141211通达OA2013版<=6.2020141017漏洞分析根据网上的文章可以知道任意文件上传的漏洞点在is......
  • .NET Core发送HTTP Post和Get
    ///<summary>///公共方法——发送httppost请求2020年6月2日11:20:42Dennyhui///</summary>///<paramname="formData">参数</param>///<paramname="requestUri">请求地址</param>......
  • Getx controller初始化携带参数
    不难的一个问题,写的时候一时间没反应过来。。。//声明controllerSomeControllerextendsGetxController{ finalStringid; finalString?name;SomeController({requiredthis.id,this.name});staticSomeControllergetto=>Get.find();initConfig(){ pr......
  • cocoaPod 执行 pod install 时出现警告:The `XX [Release]` target overrides the `CLA
    最近执行Podinstall安装命令时,控制台输出警告信息:[!]The`XXX[Debug]`targetoverridesthe`CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES`buildsettingdefinedin`Pods/TargetSupportFiles/Pods-XXX/Pods-XXX.debug.xcconfig'.Thiscanleadtop......
  • 压测工具(vegeta)-测试haproxy
    一、压测工具vegeta1、介绍Vegeta是一个用Go语言编写的多功能的HTTP负载测试工具,它提供了命令行工具和一个开发库。 官方地址:https://github.com/tsenart/vegeta2、安装Vegeta wgethttps://github.com/tsenart/vegeta/releases/download/v7.0.3/vegeta-7.0.3-linux-......
  • get 分页传对象
    前台exportfunctionfetchList(query?:Object){returnrequest({url:'/bs/bsCompanyFinancial/page',method:'get',params:query})}conststate:BasicTableProps=reactive<BasicTableProps>({queryForm:{},......
  • 短小精悍(4) - Rust操作系统随机数getrandom库介绍
    今天带来的是另一个“短小精悍”的库:getrandom。它的作用是从操作系统提供的随机数源获得一段随机数。用法getrandom的用法很简单,唯一需要了解的就是它内部的同名函数:pubfngetrandom(dest:&mut[u8])->Result<(),Error>它将会向dest中填充来自操作系统的随机数。示例:......
  • Python消息队列之Huey
    缘起:之前在Python中使用最多的就是Celery,同样的在这次项目中使用了Celery+eventlet的方式,但是由于具体执行的逻辑是使用的异步编写的,当时就出现了一个问题,当使用httpx的AsyncClient发送一个网络请求的时候,发生了阻塞,导致整个程序无法完整执行.于是就找替代方案,于是......
  • webpack概念(依赖图、target、manifest)
    依赖图(dependencygraph)依赖的东西可以是代码,也可以是非代码(images和web字体) 从 入口 开始,webpack会递归的构建一个 依赖关系图,这个依赖图包含着应用程序中所需的每个模块,然后将所有模块打包为少量的 bundle ——通常只有一个——可由浏览器加载。对于 HTTP/2 来......