V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cz5424
V2EX  ›  问与答

想请教一下 Celery 的队列高级用法,或者有没其他方案

  •  
  •   cz5424 · 2020-02-28 23:43:31 +08:00 · 1598 次点击
    这是一个创建于 1733 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设一个场景:

    A,B,C,D.....等等无数个人需要排队发邮件,邮件数量也不是固定的,会不断的增加

    想要给每个人都排个队,A 的单独一个队列发送,B 的单独一个队列发送,C 单独一个队列发送...发完不占用 worker。

    换句话说,A 的每次在 worker 中只有一封邮件在发送,发完取 A 的下一封。B,C,D....同理

    worker 数等于可以同时处理的人数

    目前找到的方案是 celery 的 chain,本来这个队列体系也使用 Celery 的。 但是 chain 只能在任务发起前已经排好队了,我的需求是不断能加到队伍后面。

    不知道有没有大佬了解过或者做过相同的事情?简而言之双重队列?

    3 条回复    2020-02-29 10:03:48 +08:00
    wd
        1
    wd  
       2020-02-29 00:07:48 +08:00 via iPhone
    celery 不是用 redis 么,刚好可以复用下,你自己找个 db 建几个 channel,然后按照自己的逻辑去做新的分发逻辑,是不是可以。
    cz5424
        2
    cz5424  
    OP
       2020-02-29 09:46:28 +08:00
    @wd 纯手动的到真的没办法再考虑,手动费时费事
    noobsheldon
        3
    noobsheldon  
       2020-02-29 10:03:48 +08:00 via Android
    建个任务接收要发邮件的信息,根据邮件所属人 A,B,C 分别建立一个队列,分别建立一个消费者,设置一个计时器,多久没收到 A 的邮件就将建好的 A 队列删除。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1148 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:55 · PVG 02:55 · LAX 10:55 · JFK 13:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.