假设一个场景:
A,B,C,D.....等等无数个人需要排队发邮件,邮件数量也不是固定的,会不断的增加
想要给每个人都排个队,A 的单独一个队列发送,B 的单独一个队列发送,C 单独一个队列发送...发完不占用 worker。
换句话说,A 的每次在 worker 中只有一封邮件在发送,发完取 A 的下一封。B,C,D....同理
worker 数等于可以同时处理的人数
目前找到的方案是 celery 的 chain,本来这个队列体系也使用 Celery 的。 但是 chain 只能在任务发起前已经排好队了,我的需求是不断能加到队伍后面。
不知道有没有大佬了解过或者做过相同的事情?简而言之双重队列?
1
wd 2020-02-29 00:07:48 +08:00 via iPhone
celery 不是用 redis 么,刚好可以复用下,你自己找个 db 建几个 channel,然后按照自己的逻辑去做新的分发逻辑,是不是可以。
|
3
noobsheldon 2020-02-29 10:03:48 +08:00 via Android
建个任务接收要发邮件的信息,根据邮件所属人 A,B,C 分别建立一个队列,分别建立一个消费者,设置一个计时器,多久没收到 A 的邮件就将建好的 A 队列删除。
|