首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
beego
宝塔
V2EX  ›  Go

Go gin 框架如何开启和停止任务

  •  
  •   Hanggi · 106 天前 · 2284 次点击
    这是一个创建于 106 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有两个 API 接口,/v1/run/v1/stop

    任务是多个的,根据 id 区分。

    调用 /v1/run?id=1 任务 1 就会开始运行并处于运行状态。

    因为任务是定期持续运行的类型,所以任务可能要用类似 gocron 之类的库,或者有个好的选择。

    再调用 /v1/stop?id=1 就会停止。

    还有就是 /v1/status?id=1 就能查看运行状态。

    要如何实现呢?

    第 1 条附言  ·  106 天前
    不是说跟 gin 有什么关系,而是要在 gin 实现它。
    目前有一种实现方案,但是感觉并不是特别优雅,想寻求一种优雅的实现方法。

    简单说就是多任务并发队列,每个任务都有不同的循环周期。
    需要添加新任务,查询所有任务,停止并删除指定任务。

    求优雅的实现方法。
    16 回复  |  直到 2019-08-08 02:30:34 +08:00
        1
    liangjx   106 天前
    设置一个信号量,stop 修改信号量
        2
    ManjusakaL   106 天前
    最好依靠专门的队列来做吧。。
        3
    thet   106 天前 via Android
    跟 gin 无关,要看接口里面的 handler 怎么实现,任务跑在哪的
        4
    labulaka521   106 天前 via Android
    暂停任务可以使用 context
        5
    karllynn   106 天前
    这跟 gin 有啥关系…
        6
    Hanggi   106 天前
    @karllynn Api 框架啊
        7
    reus   106 天前   ♥ 2
    这和 gin 没有关系,你不用 gin 不会实现的话,用 gin 你也一样不会实现
        8
    yiyi11   106 天前 via Android
    你需要一个监听器。
        9
    Hanggi   106 天前
    @reus 嗯,不用 gin 知道怎么做,但是得加到 gin 上去,会吗?
        10
    a7a2a7a2   106 天前
    4 楼说对了,早两年就有出了外部控制协程的官方库了,context
        11
    Hanggi   106 天前
    @labulaka521
    @a7a2a7a2 谢谢,研究下。
        12
    labulaka521   106 天前
    @Hanggi 可以这样做 任务运行的时候穿进去 ctx 然后保存这个 ctx 对应的 cancelFunc 和任务名称保存在一个 map 中 map 是全局变量,然后停止的时候从 map 中取出任务对应的 cancelFunc 执行就可以了
        13
    Hanggi   106 天前
    @labulaka521 谢谢,要的就是这个。
        14
    clearT   106 天前 via iPhone
    https://github.com/robfig/cron
    github.com/jakecoffman/cron
    看看这两个能满足吗,后者再前者上封装了删除任务的方法
        15
    Mark3K   106 天前
    这 API 设计的很有趣,跟函数名有异曲同工之妙
        16
    Mitt   106 天前 via iPhone
    这确实跟 gin 没关系,你的问题其实应该是如何持久化存储状态
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3393 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 05:04 · PVG 13:04 · LAX 21:04 · JFK 00:04
    ♥ Do have faith in what you're doing.