Celery 任务堆积是怎么解决的?

2022 年 3 月 17 日
 bulay

如果生产者的生产速度大于消费者的消费速度,在不增加消费者的情况下,celery 会怎么处理任务堆积的问题 丢弃任务还是生产者无法写入? ps:celery 的官方文档各位还能打开吗,我的打不开了

3573 次点击
所在节点    程序员
21 条回复
julyclyde
2022 年 3 月 17 日
会导致队列变长
bulay
2022 年 3 月 17 日
@julyclyde 那也不会无限制增长吧,redis 也会有限制的
so1n
2022 年 3 月 17 日
@bulay 用 celery+redis 不怕出事吗...
tcpdump
2022 年 3 月 17 日
@so1n 能出什么事?没发现问题。
Rebely
2022 年 3 月 17 日
redis 内存吃光报错?
任务最好要加过期时间( expires )的吧
zhoudaiyu
2022 年 3 月 17 日
会占用 broker ( redis )的内存,异步任务会延迟
bulay
2022 年 3 月 17 日
@so1n 能说说可能出现的问题有哪些吗,也好提前预防
bulay
2022 年 3 月 17 日
@Rebely
@zhoudaiyu
那就是 celery 本身没有对任务堆积的处理呗,比如任务数目大于一定量时,写入任务报错这种机制
cyct123
2022 年 3 月 17 日
@bulay 写入任务报错主要看 broker 的性能吧
so1n
2022 年 3 月 17 日
so1n
2022 年 3 月 17 日
@bulay
@tcpdump 不稳定啊 容易出一些奇奇怪怪的问题(出来问题就很难排查的那种),还容易丢消息 可以的话尽量用 rabbitmq 把
fengjianxinghun
2022 年 3 月 17 日
@Rebely celery 超时实现的也不靠谱。。celery 就是个传销软件,bug 奇多,设计复杂
bulay
2022 年 3 月 17 日
@fengjianxinghun 还有别的靠谱的分布式异步任务队列吗
fengjianxinghun
2022 年 3 月 17 日
@bulay 没有,只有自己写的靠谱。
fengjianxinghun
2022 年 3 月 17 日
我就没见过任何一个能正确硬超时的异步任务队列系统。。
fxxkgw
2022 年 3 月 17 日
celery 任务本身要做成异步
cz5424
2022 年 3 月 17 日
如果不特别处理会一直堆下去,可以把 task id 存起来,发现堆积主动丢弃
lesterholy
2022 年 3 月 18 日
个人用过 dask 并没有深入对比过这两者,用的不精,楼主有时间可以研究研究
bulay
2022 年 3 月 18 日
@fxxkgw 我觉的你这个想法很危险,会把服务器搞挂的
@cz5424 目前考虑这种做法,设置一个 expire,同时写任务的时候判断一下任务队列长度
leven87
2022 年 3 月 18 日

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/841007

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX