内部消息发布到 redis 中,此时对消息的处理是否需使用 celery ?并且使用 celery 该如何设计消息处理的机制?
1
leishi1313 2019-06-18 13:06:05 +08:00 via Android
celery 也可以用 redis 当 broker,这事你琢磨琢磨
|
2
spy0578 OP @leishi1313 是的 这个我知道
用 celery 最好是不是使用多个 worker |
3
leishi1313 2019-06-19 01:31:15 +08:00 via Android
hmm,不是很明白你问的到底是什么,简短点的对你所有问题的答案是都可以,可以用 celery 处理 redis 消息,可以用多个 worker,但是问题是你的需求是什么呢,所有的程序设计都是跟需求紧密相关的。你要是就想玩玩 celery 那好好跟着文档走就好了,再看看别人的项目
|
4
spy0578 OP @leishi1313 需求是这样的:
会有大量的消息在 redis 上需要被处理。目前只是用单线程来处理消息,肯定会有性能瓶颈。 所以说考虑使用多线程或者多进程方式来处理消息。 celery 是用作多进程的 worker 调度么? |
5
leishi1313 2019-06-19 12:36:06 +08:00 via Android
@spy0578 是这样子的,如果你的消息是由其他的应用发布到 redis 的,那你用什么都无所谓,要是是 io 密集型的任务的话用各种异步框架不断地从 redis 里拉出消息处理就好了,cpu 密集型的就别为难 python 了,python 有 GIL,计算也不快。如果消息发布啦消息处理啦本身都是一个系统的两部分,那你可以考虑 celery 或者情况点 python-rq,多起几个 worker 就好了。各种爬虫啦,推送系统啦都是这个思路
|