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

2022-03-17 14:12:47 +08:00
 bulay

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

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

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

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

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

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

© 2021 V2EX