The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
laolaowang

有没有用 echo 的兄弟,怎么判断 echo 服务启动成功,然后执行一些其他逻辑的

  •  
  •   laolaowang · Aug 15, 2022 · 2157 views
    This topic created in 1391 days ago, the information mentioned may be changed or developed.

    我想在服务启动成功之后执行一个定时任务,如果启动失败就不执行了

    但是 echo 服务启动之后,就会”卡住“,后续逻辑无法继续执行了,这个其实和 echo 关系不大,其他的 web 服务也是这样的。

    目前是用了一个笨办法,另启一个携程,然后不断的去 ping 服务,如果返回 200 则表示成功

    感觉太 low 了,不知道有没有更好的解决办法

    11 replies    2022-08-15 19:50:59 +08:00
    SorcererXW
        1
    SorcererXW  
       Aug 15, 2022   ❤️ 1
    echo 内部用的就是原生的 http server ,可以看看这个 https://stackoverflow.com/questions/53332667/how-to-notify-when-http-server-starts-successfully

    > 然后不断的去 ping 服务

    这也不算笨吧,k8s 的健康检查判断服务是否启动也是这么做的
    FrankAdler
        2
    FrankAdler  
       Aug 15, 2022 via iPhone
    上代码
    liaohongxing
        3
    liaohongxing  
       Aug 15, 2022
    我也用 echo , 也有定时任务 ,没遇到你说的情况,我的定时任务自己造的轮子。
    原理就是时间轮+协程, 不会阻塞 echo ,echo 也不会阻塞任务 。实在不会,github 整合一个 cron 库就行
    liaohongxing
        4
    liaohongxing  
       Aug 15, 2022
    你的服务要在 echo 之前运行
    laolaowang
        5
    laolaowang  
    OP
       Aug 15, 2022
    @liaohongxing 我现在用的是 go-cron ,就是好奇怎么让定时任务不放在 echo 之前之后
    liaohongxing
        6
    liaohongxing  
       Aug 15, 2022
    你把任务放在 echo 之后,任务肯定会卡住,因为标准库基本原理就是 select chan , chan 没有数据自然卡住,后面的代码不会执行 ,无限循环在 Start 那里,go-cron 启动在 echo 前面, go-cron 本省不会阻塞,原理就是到了时间,启动一个协程运行 func 里面的代码,不会阻塞主线程
    dzdh
        7
    dzdh  
       Aug 15, 2022
    自己 net.Listen 或者 tls.Listen 。listen 成功,就一定能启动成功。listen 成功后启动你的定时任务 go func(){} 用协程。

    然后再把 listen 传给 echo 再启动 echo 。
    kidlj
        8
    kidlj  
       Aug 15, 2022
    先在 goroutine 里启动任务,然后 Echo 启动不成功直接 panic.
    lxz6597863
        9
    lxz6597863  
       Aug 15, 2022
    @dzdh +1
    laolaowang
        10
    laolaowang  
    OP
       Aug 15, 2022
    @dzdh 学习了
    laolaowang
        11
    laolaowang  
    OP
       Aug 15, 2022
    @kidlj 这个也可以,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2881 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 14:07 · PVG 22:07 · LAX 07:07 · JFK 10:07
    ♥ Do have faith in what you're doing.