有两个 API 接口,/v1/run 和 /v1/stop。
任务是多个的,根据 id 区分。
调用 /v1/run?id=1 任务 1 就会开始运行并处于运行状态。
因为任务是定期持续运行的类型,所以任务可能要用类似 gocron 之类的库,或者有个好的选择。
再调用 /v1/stop?id=1 就会停止。
还有就是 /v1/status?id=1 就能查看运行状态。
要如何实现呢?
有两个 API 接口,/v1/run 和 /v1/stop。
任务是多个的,根据 id 区分。
调用 /v1/run?id=1 任务 1 就会开始运行并处于运行状态。
因为任务是定期持续运行的类型,所以任务可能要用类似 gocron 之类的库,或者有个好的选择。
再调用 /v1/stop?id=1 就会停止。
还有就是 /v1/status?id=1 就能查看运行状态。
要如何实现呢?
|
liangjxAug 7, 2019
1
设置一个信号量,stop 修改信号量
|
|
ManjusakaLAug 7, 2019
2
最好依靠专门的队列来做吧。。
|
|
thetAug 7, 2019 via Android
3
跟 gin 无关,要看接口里面的 handler 怎么实现,任务跑在哪的
|
|
labulaka521Aug 7, 2019 via Android
4
暂停任务可以使用 context
|
|
karllynnAug 7, 2019
5
这跟 gin 有啥关系…
|
|
7
这和 gin 没有关系,你不用 gin 不会实现的话,用 gin 你也一样不会实现
|
|
yiyi11Aug 7, 2019 via Android
8
你需要一个监听器。
|
|
a7a2a7a2Aug 7, 2019
10
4 楼说对了,早两年就有出了外部控制协程的官方库了,context
|
|
11
|
|
labulaka521Aug 7, 2019
12
@Hanggi 可以这样做 任务运行的时候穿进去 ctx 然后保存这个 ctx 对应的 cancelFunc 和任务名称保存在一个 map 中 map 是全局变量,然后停止的时候从 map 中取出任务对应的 cancelFunc 执行就可以了
|
|
13
@labulaka521 谢谢,要的就是这个。
|
|
clearTAug 7, 2019 via iPhone
14
|
|
Mark3KAug 8, 2019
15
这 API 设计的很有趣,跟函数名有异曲同工之妙
|
|
MittAug 8, 2019 via iPhone
16
这确实跟 gin 没关系,你的问题其实应该是如何持久化存储状态
|