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

Python celery 使用场景

  •  
  •   spy0578 · 2019-06-18 12:38:45 +08:00 · 1945 次点击
    这是一个创建于 1771 天前的主题,其中的信息可能已经有所发展或是发生改变。

    内部消息发布到 redis 中,此时对消息的处理是否需使用 celery ?并且使用 celery 该如何设计消息处理的机制?

    5 条回复    2019-06-19 12:36:06 +08:00
    leishi1313
        1
    leishi1313  
       2019-06-18 13:06:05 +08:00 via Android
    celery 也可以用 redis 当 broker,这事你琢磨琢磨
    spy0578
        2
    spy0578  
    OP
       2019-06-18 14:56:25 +08:00
    @leishi1313 是的 这个我知道
    用 celery 最好是不是使用多个 worker
    leishi1313
        3
    leishi1313  
       2019-06-19 01:31:15 +08:00 via Android
    hmm,不是很明白你问的到底是什么,简短点的对你所有问题的答案是都可以,可以用 celery 处理 redis 消息,可以用多个 worker,但是问题是你的需求是什么呢,所有的程序设计都是跟需求紧密相关的。你要是就想玩玩 celery 那好好跟着文档走就好了,再看看别人的项目
    spy0578
        4
    spy0578  
    OP
       2019-06-19 10:12:20 +08:00
    @leishi1313 需求是这样的:
    会有大量的消息在 redis 上需要被处理。目前只是用单线程来处理消息,肯定会有性能瓶颈。
    所以说考虑使用多线程或者多进程方式来处理消息。
    celery 是用作多进程的 worker 调度么?
    leishi1313
        5
    leishi1313  
       2019-06-19 12:36:06 +08:00 via Android
    @spy0578 是这样子的,如果你的消息是由其他的应用发布到 redis 的,那你用什么都无所谓,要是是 io 密集型的任务的话用各种异步框架不断地从 redis 里拉出消息处理就好了,cpu 密集型的就别为难 python 了,python 有 GIL,计算也不快。如果消息发布啦消息处理啦本身都是一个系统的两部分,那你可以考虑 celery 或者情况点 python-rq,多起几个 worker 就好了。各种爬虫啦,推送系统啦都是这个思路
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1151 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 18:24 · PVG 02:24 · LAX 11:24 · JFK 14:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.