参考自 Celery 和 Python-RQ 的实现, 用 Golang 实现了一个分布式任务队列. 目前的功能有:
1
TangMonk 2017-10-27 19:07:35 +08:00 via Android
感觉可以不要 redis 了
|
2
herozem OP @TangMonk 为啥, 你是指用 Golang 不需要 task queue? 还是说可以使用其他的作为 broker 呢?
|
3
timothyye 2017-10-27 19:41:47 +08:00 via Android
有没有性能测试数据?
|
5
herozem OP @timothyye 暂时还没有, 我想等我到 0.1 版(完成目前列出来的功能,包括平滑重启)之后,再写性能测试吧,目前主要继续专注功能上的开发
|
6
lights 2017-10-27 21:06:17 +08:00 via iPhone
x 是表示有还是表示没有?
另外数据固化以及队列的多端生产和多端消费怎么样 |
8
herozem OP @lights 基于 redis 的任务队列有一个通病,就是很难保证消费者挂了之后任务不丢失. 目前 toq 也存在这个问题, 这是上面 TODO 中 HA 这一步要做的. 多端生产是支持的, 只要按照协议往 broker 中打入数据即可. 多端消费也是支持的. 我刚刚提交了一个新的提交, 引入了 `sleepy mode`, 即, 消费者端忙碌时, 会延迟从 broker 拉任务. 这也是为之后做任务不丢失的铺垫.
|
9
yzjustc 2018-06-12 22:44:21 +08:00
@herozem 刚才看了下你这个队列,retry 的时候不应该再用新的 goroutine 而是接在本协程栈做,递归或者循环都可以,如果开新 goroutine,可能一个 task 会执行两次,一个 token 回放了两次
|