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

2020-02-28 23:43:31 +08:00
 cz5424

假设一个场景:

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

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

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

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

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

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

1536 次点击
所在节点    问与答
3 条回复
wd
2020-02-29 00:07:48 +08:00
celery 不是用 redis 么,刚好可以复用下,你自己找个 db 建几个 channel,然后按照自己的逻辑去做新的分发逻辑,是不是可以。
cz5424
2020-02-29 09:46:28 +08:00
@wd 纯手动的到真的没办法再考虑,手动费时费事
noobsheldon
2020-02-29 10:03:48 +08:00
建个任务接收要发邮件的信息,根据邮件所属人 A,B,C 分别建立一个队列,分别建立一个消费者,设置一个计时器,多久没收到 A 的邮件就将建好的 A 队列删除。

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

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

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

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

© 2021 V2EX