V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
gengchun
V2EX  ›  Python

大家什么样的需求会考虑用 celery 这种?

  •  
  •   gengchun · 2022-05-02 18:35:13 +08:00 · 3331 次点击
    这是一个创建于 938 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我反正现在好几个需求,都是直接用 redis pub/sub 就完了。要求更高我可能也是直接用 kafka 就好了。

    celery 很早以前试过,太复杂了,不能忍。后面一直没有找到 celery 有优势的情况,每次都觉得,用它除了增加自己的心智负担,并没有什么好处。

    11 条回复    2022-05-04 16:09:55 +08:00
    kongkongyzt
        1
    kongkongyzt  
       2022-05-02 18:42:14 +08:00   ❤️ 1
    和你一样,简单的我用 redis 。复杂一些,对可观测,性能和可用性有要求的我就用云厂商提供的 Pulsar
    ipwx
        2
    ipwx  
       2022-05-02 18:54:34 +08:00   ❤️ 1
    这两种不是一个维度的吧。。。一个 message passing, 一个是 job queue 。

    和 celery 对标的是使用了 redis 的 rq 才对。
    lolizeppelin
        3
    lolizeppelin  
       2022-05-02 18:55:16 +08:00   ❤️ 1
    核心是用好 rabbitmq,celery 行不行我不知道
    反正 rabbitmq 是很行的
    gengchun
        4
    gengchun  
    OP
       2022-05-02 19:39:07 +08:00
    @ipwx 说的就是这个问题,redis 不是正宗的消息服务(message broker)。如果我换一个例子,比如说用 rabbitmq ,是用 pika 还是 celery 的话,可能更好一些。

    你说的 job queue 。kafka 有一个叫 kq 的库。现实是非常简单的。kq, rq 这类库的实现说白了就是 Worker, Queue, Job, Message 这四个类。这个其实是一个类似于 web 服务的 MVC 的范式。就和不能说所有的 web 服务都必须要有 MVC 一样,不是所有用到消息服务的,都一定要遵守这个范式。
    neoblackcap
        5
    neoblackcap  
       2022-05-02 20:13:52 +08:00
    其实对照功能列表就知道了,如果你觉得 celery 给你带来的成本高于收益,很大程度你是对的,那么不用就好了。没有什么说一定要上 celery 的。
    至于用 celery 的团队也没有错,有可能是他们首先比较熟悉。然后他们可能用到了 celery 的一些特性,比如既需要定时任务,也需要 job queue 。
    没有什么选型定式,看个人需要。
    tulongtou
        6
    tulongtou  
       2022-05-02 20:25:36 +08:00
    python 开发的网站,后台耗时的任务用 celery 无缝集成啊,我们用了 5 年了,一直很稳定。

    楼主有什么好用的方案可以替代么?
    lolizeppelin
        7
    lolizeppelin  
       2022-05-03 10:25:02 +08:00
    kafka 不好做消息返回,没有确达,这点天生就是不如 rabbitmq 的

    具体要不要用 rabbitmq 是要看你业务流程的.

    所以 redis/kafka 并不是满足很多情况...

    celery 据说比较菜所以我才没说 celery 而是直接说 rabbitmq
    leonme
        8
    leonme  
       2022-05-03 18:29:17 +08:00 via iPhone
    @lolizeppelin kafka 没有确达?
    lolizeppelin
        9
    lolizeppelin  
       2022-05-04 11:26:38 +08:00
    @leonme
    发现我理解错了,我都是用 rabbitmq 的以前试用 kafka 用 ack 概念去套了下发现 kafka 没有客户端 ack 以为就客户端不能确达..
    kafka 可以用偏移来确达达的...也可以用单分区来做 callback

    也就是说 kafka 可以和 rabbitmq 一样做 rpc ,只是因为 kafka 异步批量的高性能特性并不特别适合 rpc 。
    也就是说只要有了适合的框架积累楼主说得没错.
    gengchun
        10
    gengchun  
    OP
       2022-05-04 13:13:40 +08:00
    @neoblackcap 这个当然谈不上对错。只是想看看一开始选 celery 会是基于什么考虑。

    @tulongtou 我估计你们应该是 django 这类,而且要有个任务展示管理的页面。
    rev1si0n
        11
    rev1si0n  
       2022-05-04 16:09:55 +08:00
    感觉 celery 太重了,只有之前写爬虫用过一次
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3247 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:55 · PVG 20:55 · LAX 04:55 · JFK 07:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.