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
YuuuZeee
V2EX  ›  Python

为啥感觉用 Celery 的大公司比较少

  •  2
     
  •   YuuuZeee · 2018-10-01 22:35:35 +08:00 · 23952 次点击
    这是一个创建于 2246 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 不知道是不是个人见识比较少 感觉国内用 python 的远不及 java 的多。。。然后同理导致使用 Celery 的公司也很少。。。

    同事们好多都是表示没听说过这个东西=-=

    面试的时候好不容于遇到一个用这个的。。。只会用这个发邮件。。。问点消息中间件 /Celery 是如何处理一个 task 的就 GG

    个人感觉这个东西是类似调度系统来离线 /异步去执行各类任务的 而且感觉 learning curve 也不高呀。。。咋没啥人用

    用 Celery 的筒子们举起你们的小手手!

    54 条回复    2019-05-07 20:05:36 +08:00
    zhuangzhuang1988
        1
    zhuangzhuang1988  
       2018-10-01 22:43:48 +08:00
    动态语言没啥用.
    lfzyx
        2
    lfzyx  
       2018-10-01 22:44:31 +08:00
    只会用 celery 发邮件的🙋‍♂️
    ericls
        3
    ericls  
       2018-10-01 22:58:49 +08:00 via iPhone
    挺多的啊 这个几乎是行业标准
    Yeungsin
        4
    Yeungsin  
       2018-10-01 23:04:40 +08:00
    我们在用,不过 worker 太多,撑不住,把 celery 好几个功能都关了,差不多当成普通 MQ 了
    zwh2698
        5
    zwh2698  
       2018-10-01 23:08:13 +08:00 via Android   ❤️ 1
    从稳定性说 Java 确实优于 python,尤其是大量用户的时候,Java 更有优势
    Yeungsin
        6
    Yeungsin  
       2018-10-01 23:09:05 +08:00
    想起来 4.2.0 有一个内存泄露的 bug 还在等着修复😔
    Zzdex
        7
    Zzdex  
       2018-10-01 23:09:32 +08:00
    只用 celery 来发邮件,处理定时任务,更深的没研究过,,,
    YuuuZeee
        8
    YuuuZeee  
    OP
       2018-10-01 23:20:25 +08:00
    @Yeungsin 诶 就是想交流一下这方面大家是如何去管理多个 worker 的。。。。
    cz5424
        9
    cz5424  
       2018-10-01 23:26:16 +08:00
    @YuuuZeee flower 了解一下
    20150517
        10
    20150517  
       2018-10-01 23:37:35 +08:00
    因为正常人都用比如 aws sqs 这种云集成的服务,单独开这个不合算
    0xABCD
        11
    0xABCD  
       2018-10-02 00:00:42 +08:00 via Android
    用 py 的人这个应该要知道吧
    0ZXYDDu796nVCFxq
        12
    0ZXYDDu796nVCFxq  
       2018-10-02 00:28:22 +08:00 via Android
    我们用得多,大厂
    neoblackcap
        13
    neoblackcap  
       2018-10-02 00:36:36 +08:00   ❤️ 2
    其实是跟编程语言相关的,虽然 celery 说自己也是一个 actor 框架,任务队列。但是相对于 Java,你说 actor 框架,他们有 akka,任务队列也不少。还有就是队列什么他们一个都不少,有真线程,最简单的难道不是开一个线程去干,干完了就同步一下以及回调吗?
    YuuuZeee
        14
    YuuuZeee  
    OP
       2018-10-02 01:00:13 +08:00
    @gstqc 方便透露哪些大厂吗=-=感觉找不到队友呀
    Eds1995
        15
    Eds1995  
       2018-10-02 01:40:19 +08:00 via Android
    celery 坑还是蛮多的,特别定时任务,我们一般用来做定时任务,还有数据导入导出。
    Eds1995
        16
    Eds1995  
       2018-10-02 01:44:50 +08:00 via Android
    还有就是 celery 不支持 redis cluster 集群模式,导致 redis 集群只能用 Sentinel
    blless
        18
    blless  
       2018-10-02 03:03:13 +08:00 via Android
    额 真需要强事务写数据库就好了吧…我是想不出使用场景
    janxin
        19
    janxin  
       2018-10-02 07:48:08 +08:00
    用 Java 的确实比 Python 多,这没什么奇怪的呀
    noobsheldon
        20
    noobsheldon  
       2018-10-02 08:16:43 +08:00 via Android   ❤️ 1
    celery 的任务队列不是就把消息队列包一层,然后帮你写好了生产者和消费者吗?你调 task.delay()的时候,MainProcess 把调用函数及参数序列化一下,然后 WorkerProcess 再反序列化一下调用信息,找到对应的 task,并使用得到的参数进行调用。个人的一点看法,交流一下。
    ashin
        21
    ashin  
       2018-10-02 09:58:16 +08:00
    感觉 celery 自身一点都不稳 issue 里面好多 bug 的样子,感觉还是比较重又容易出问题,可能是我太菜,现在用的 worker 使用 gevent 的模式每次启动后差不多 3 分钟后的样子就会稳定的报一次连接 mq 的错误,然后再也不发生,对业务貌似没有实际影响,prefork 的话大概 15 分钟发生。而且 flower 现在也有 bug 的样子 页面点 worker 根本进不去,其他都正常
    GoLand
        22
    GoLand  
       2018-10-02 11:23:39 +08:00 via iPhone
    我们公司也重度使用 celery 吧,中等厂。挺好的。
    zhangsen1992
        23
    zhangsen1992  
       2018-10-02 14:06:31 +08:00
    我记得 zhihu AD 都用过这个吧
    akmonde
        24
    akmonde  
       2018-10-02 15:43:19 +08:00
    关键 v 站玩这个的也不算多...
    zhengxiaowai
        25
    zhengxiaowai  
       2018-10-02 17:25:34 +08:00   ❤️ 1
    celery 坑太多真的太多,异步任务可以使用消息队列替代,定时任务那就更多了。

    celery beat 添加修改任务,必须要重启,这个太坑了
    scriptB0y
        26
    scriptB0y  
       2018-10-02 17:50:10 +08:00
    我一开始也基本是个项目都需要用 Celery,后来发现 uWSGI 自带了一个简单的 Spooler 可以处理大部分异步任务和周期运行的任务( 2min 以内可以)

    https://www.kawabangga.com/posts/3101
    qq976739120
        27
    qq976739120  
       2018-10-02 20:27:35 +08:00   ❤️ 1
    我到现在都没学会怎么用 celery 往指定的 exchange 发消息...所以干脆自己封装了一个,还蛮好用的
    fatpa
        28
    fatpa  
       2018-10-02 23:59:29 +08:00
    搭配 redis 做消息对列,基本就可以实现一个定时 scheduler 和一堆无限拓展的 woker 了,之前做监控和消息推送用这样的方案实现
    Ehco1996
        29
    Ehco1996  
       2018-10-03 09:15:09 +08:00
    我们这也重度依赖 celery
    比较可怕的是我们居然用他做数据同步
    kingfighters
        30
    kingfighters  
       2018-10-03 09:19:09 +08:00
    @fatpa 为什么用 redis 做消息队列,不该用 rebbitmq 么?其实可以了解一下 airbnb 开源的 airflow,之前搭过一个类似的系统,不过当然没有 airflow 那么功能全,也是业务场景不需要。。
    liudi1990
        31
    liudi1990  
       2018-10-03 12:48:09 +08:00
    Robinhood 在用 并且主要的 contributor 在他家 fte 你感受一下
    YaphetYin
        32
    YaphetYin  
       2018-10-04 02:26:25 +08:00 via iPhone
    @Eds1995 4.2 我记得支持了
    YaphetYin
        33
    YaphetYin  
       2018-10-04 02:33:38 +08:00 via iPhone
    踩了不少坑,最奇葩的一个是 4.2 下 chunks.group.skew 竟然需要 eval 一下才能正确执行,感觉不到测试的气息。看有人已经提了 issue,4.3 会修复。还有他家文档极其不友好,什么 status,state,这种一些类似的属性都不给说明,用得心累
    lolizeppelin
        34
    lolizeppelin  
       2018-10-04 12:46:03 +08:00
    直接拿 openstack 相关代码用 用什么 celery

    作者家的 kombu 还是不错的 233
    eloah
        35
    eloah  
       2018-10-04 15:38:44 +08:00
    之前用过......
    生产环境上内存泄漏,调度停止什么的不要太多,提了 Issue 修复也不发版本
    反正我是觉得挺坑的
    ytmsdy
        36
    ytmsdy  
       2018-10-04 16:04:52 +08:00 via iPhone
    之前用 celery 做异步队列,结果在做异步推送的时候碰到 bug。4 万多个设备每个设备推送了 9 个一样的通知,被老板骂死。然后再也不敢用 celery 了。
    fushall
        37
    fushall  
       2018-10-04 17:38:37 +08:00
    目前的实习公司目前准备从 celery 转到 dask
    hotea
        39
    hotea  
       2018-10-04 22:26:26 +08:00
    复杂的异步任务用 celery,一般的用 rq 比较好,简单
    kingfighters
        40
    kingfighters  
       2018-10-05 08:32:41 +08:00
    @ytmsdy 后来用什么了?
    YuuuZeee
        41
    YuuuZeee  
    OP
       2018-10-05 10:46:53 +08:00
    @ytmsdy 后来换啥了
    sampeng
        42
    sampeng  
       2018-10-05 12:49:22 +08:00 via iPhone
    消息中间件一抓一大把有什么好奇怪的
    ashCloud
        43
    ashCloud  
       2018-10-05 14:34:49 +08:00
    python 还是外企用的多一点
    fatpa
        44
    fatpa  
       2018-10-06 00:03:53 +08:00
    @kingfighters 并发量不那么高的时候,就没必要折腾那么多组件了,维护成本也是不小的
    foxyier
        45
    foxyier  
       2018-10-08 10:29:55 +08:00
    路过的表示这东西坑很多,自己试玩了一个来月果断弃了
    ytmsdy
        46
    ytmsdy  
       2018-10-09 12:27:37 +08:00   ❤️ 1
    @kingfighters
    @YuuuZeee
    老老实实用了 rabbitmq
    gsw945
        47
    gsw945  
       2018-10-09 12:50:22 +08:00 via Android   ❤️ 1
    不知道大公司用什么,我用 APScheduler 加其它服务 替代 Celery 了
    jerrychan807
        48
    jerrychan807  
       2018-11-07 10:24:56 +08:00
    @Eds1995 定时任务好多坑呀,如果用 UTC 时区,就正常运行。改成东八区时区,就不行了。你们有遇到这个时区的问题吗?我的用的 django-celery-beat
    AlexMercerZ
        49
    AlexMercerZ  
       2019-01-08 14:52:08 +08:00
    @zhuangzhuang1988 没啥用你就别用 bb 啥
    AlexMercerZ
        50
    AlexMercerZ  
       2019-01-08 14:56:40 +08:00
    @zhuangzhuang1988 因为你垃圾 所以你觉得没啥用
    YuuuZeee
        51
    YuuuZeee  
    OP
       2019-01-09 21:24:24 +08:00
    @jerrychan807 我也遇到了 最后解决方式是用 crontabjob
    TesterCC
        52
    TesterCC  
       2019-01-31 21:29:29 +08:00
    用 celery 发邮件和处理定时任务的+1,另一个同事用来跑爬虫,目前开发中并没有什么特别深入的使用。主要也是担心不稳定。
    noobsheldon
        53
    noobsheldon  
       2019-04-17 06:53:11 +08:00 via Android
    gsw945
        54
    gsw945  
       2019-05-07 20:05:36 +08:00
    突然收到感谢,受宠若惊,刚好后面写了一个 apscheduler + rpyc 的 Demo,GitHub 地址如下:
    https://github.com/gsw945/schedule-system
    工作中,定时任务和异步任务,我全部用 apscheduler 了,没有使用 Celery。
    补充:如果异步任务的执行,需要进度更新通知,可以 job_id 为键,使用 redis 存储进度信息,或者使用 websocket 通知进度信息。
    异步任务进度通知,曾经用过:
    1. redis-py 的 redis.StrictRedis.rpush()
    2. socket.io + python-socketio
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1741 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:29 · PVG 00:29 · LAX 08:29 · JFK 11:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.