V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bulay
V2EX  ›  程序员

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

  •  
  •   bulay · 2022-03-17 14:12:47 +08:00 · 2689 次点击
    这是一个创建于 764 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    21 条回复    2022-03-18 21:40:50 +08:00
    julyclyde
        1
    julyclyde  
       2022-03-17 14:20:13 +08:00
    会导致队列变长
    bulay
        2
    bulay  
    OP
       2022-03-17 14:35:07 +08:00
    @julyclyde 那也不会无限制增长吧,redis 也会有限制的
    so1n
        3
    so1n  
       2022-03-17 14:42:59 +08:00
    @bulay 用 celery+redis 不怕出事吗...
    tcpdump
        4
    tcpdump  
       2022-03-17 14:46:42 +08:00
    @so1n 能出什么事?没发现问题。
    Rebely
        5
    Rebely  
       2022-03-17 14:50:24 +08:00
    redis 内存吃光报错?
    任务最好要加过期时间( expires )的吧
    zhoudaiyu
        6
    zhoudaiyu  
       2022-03-17 14:58:39 +08:00
    会占用 broker ( redis )的内存,异步任务会延迟
    bulay
        7
    bulay  
    OP
       2022-03-17 14:59:08 +08:00
    @so1n 能说说可能出现的问题有哪些吗,也好提前预防
    bulay
        8
    bulay  
    OP
       2022-03-17 15:04:38 +08:00
    @Rebely
    @zhoudaiyu
    那就是 celery 本身没有对任务堆积的处理呗,比如任务数目大于一定量时,写入任务报错这种机制
    cyct123
        9
    cyct123  
       2022-03-17 15:26:04 +08:00
    @bulay 写入任务报错主要看 broker 的性能吧
    so1n
        10
    so1n  
       2022-03-17 15:45:39 +08:00
    so1n
        11
    so1n  
       2022-03-17 15:46:40 +08:00
    @bulay
    @tcpdump 不稳定啊 容易出一些奇奇怪怪的问题(出来问题就很难排查的那种),还容易丢消息 可以的话尽量用 rabbitmq 把
    fengjianxinghun
        12
    fengjianxinghun  
       2022-03-17 15:57:45 +08:00
    @Rebely celery 超时实现的也不靠谱。。celery 就是个传销软件,bug 奇多,设计复杂
    bulay
        13
    bulay  
    OP
       2022-03-17 16:19:25 +08:00
    @fengjianxinghun 还有别的靠谱的分布式异步任务队列吗
    fengjianxinghun
        14
    fengjianxinghun  
       2022-03-17 16:51:43 +08:00
    @bulay 没有,只有自己写的靠谱。
    fengjianxinghun
        15
    fengjianxinghun  
       2022-03-17 16:52:20 +08:00
    我就没见过任何一个能正确硬超时的异步任务队列系统。。
    fxxkgw
        16
    fxxkgw  
       2022-03-17 19:09:51 +08:00
    celery 任务本身要做成异步
    cz5424
        17
    cz5424  
       2022-03-17 20:02:54 +08:00 via iPhone
    如果不特别处理会一直堆下去,可以把 task id 存起来,发现堆积主动丢弃
    lesterholy
        18
    lesterholy  
       2022-03-18 07:33:20 +08:00
    个人用过 dask 并没有深入对比过这两者,用的不精,楼主有时间可以研究研究
    bulay
        19
    bulay  
    OP
       2022-03-18 10:29:21 +08:00
    @fxxkgw 我觉的你这个想法很危险,会把服务器搞挂的
    @cz5424 目前考虑这种做法,设置一个 expire,同时写任务的时候判断一下任务队列长度
    leven87
        20
    leven87  
       2022-03-18 13:31:23 +08:00
    xiaoxiaoyizhi
        21
    xiaoxiaoyizhi  
       2022-03-18 21:40:50 +08:00
    有小伙伴想和 Googler 一起开发一个开源项目吗?
    如果你每周有 5 天都能投入半小时以上的时间,即可参加
    有一个组 HPA for Task Queue ,需要对 Celery 感兴趣的小伙伴加入
    感兴趣,可加我 wx: love9871112
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2512 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:37 · PVG 23:37 · LAX 08:37 · JFK 11:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.