Golang Go语言中 有没有用 echo 的兄弟,怎么判断 echo 服务启动成功,然后执行一些其他逻辑的
我想在服务启动成功之后执行一个定时任务,如果启动失败就不执行了
但是 echo 服务启动之后,就会”卡住“,后续逻辑无法继续执行了,这个其实和 echo 关系不大,其他的 web 服务也是这样的。
目前是用了一个笨办法,另启一个携程,然后不断的去 ping 服务,如果返回 200 则表示成功
感觉太 low 了,不知道有没有更好的解决办法
Golang Go语言中 有没有用 echo 的兄弟,怎么判断 echo 服务启动成功,然后执行一些其他逻辑的
echo 内部用的就是原生的 http server ,可以看看这个 https://stackoverflow.com/questions/53332667/how-to-notify-when-http-server-starts-successfully
> 然后不断的去 ping 服务
这也不算笨吧,k8s 的健康检查判断服务是否启动也是这么做的
更多关于Golang Go语言中 有没有用 echo 的兄弟,怎么判断 echo 服务启动成功,然后执行一些其他逻辑的的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
上代码
我也用 echo , 也有定时任务 ,没遇到你说的情况,我的定时任务自己造的轮子。
原理就是时间轮+协程, 不会阻塞 echo ,echo 也不会阻塞任务 。实在不会,github 整合一个 cron 库就行
你的服务要在 echo 之前运行
我现在用的是 go-cron ,就是好奇怎么让定时任务不放在 echo 之前之后
你把任务放在 echo 之后,任务肯定会卡住,因为标准库基本原理就是 select chan , chan 没有数据自然卡住,后面的代码不会执行 ,无限循环在 Start 那里,go-cron 启动在 echo 前面, go-cron 本省不会阻塞,原理就是到了时间,启动一个协程运行 func 里面的代码,不会阻塞主线程
自己 net.Listen 或者 tls.Listen 。listen 成功,就一定能启动成功。listen 成功后启动你的定时任务 go func(){} 用协程。
然后再把 listen 传给 echo 再启动 echo 。
先在 goroutine 里启动任务,然后 Echo 启动不成功直接 panic.
+1
这个也可以,