还在用老掉牙的 celery? 换 dramatiq 试试。 - V2EX
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
est
V2EX    Python

还在用老掉牙的 celery? 换 dramatiq 试试。

  •  2
     
  •   est
    est 2017-12-28 16:36:52 +08:00 8532 次点击
    这是一个创建于 2912 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有多年专业 celery 使用经验的罗马尼亚工程师 Bogdan Popa 觉得 Celery 就是个大烂坑。于是又发明了个 python 异步任务框架轮子 dramatiq

    https://dramatiq.io/motivation.html

    受到 sidekiq 的启发。对标 celery 和 python-rq (redi queue)
    第 1 条附言    2017-12-28 17:26:50 +08:00
    注意坑的一点是协议是 AGPL 的。。。。商业另外授权
    29 条回复    2020-05-11 15:55:34 +08:00
    myyou
        1
    myyou  
       2017-12-28 17:07:31 +08:00
    不错, 好东西
    clino
        2
    clino  
       2017-12-28 17:10:56 +08:00
    名字起的不太好...
    wibile
        3
    wibile  
       2017-12-28 17:12:56 +08:00
    @clino dramatic。。。。不错了
    ty89
        4
    ty89  
       2017-12-28 17:14:30 +08:00
    sidekiq 好用的一逼,自从转到 ROR,脱发都少了
    clino
        5
    clino  
       2017-12-28 17:14:44 +08:00
    @wibile #3 原来是酱
    wcsjtu
        6
    wcsjtu  
       2017-12-28 17:38:20 +08:00
    不兹次 py2, 差评啊
    inflationaaron
        7
    inflationaaron  
       2017-12-28 18:04:27 +08:00 via iPhone
    Actor 模型……怕不是想学 akka
    swulling
        8
    swulling  
       2017-12-28 18:06:53 +08:00
    AGPL 的话,你的服务要是依赖了这个库,并且对外提供服务。。那么你的全部代码都要 AGPL 出来

    MongoDB 也只是数据库部分用 AGPL,各个语言的 sdk 不是。

    一个依赖库用 AGPL 的,还是第一次见到,用 GPL 的都少见,用用 LGPL 还算可以。。
    timonwong
        9
    timonwong  
       2017-12-28 18:31:47 +08:00
    看到 Prometheus Metrics 得友情 +1
    janxin
        10
    janxin  
       2017-12-28 19:39:27 +08:00 via iPhone
    协议不友好对洁癖来说有障碍呀,虽然 celery 是很坑
    simple2025
        11
    simple2025  
       2017-12-28 21:42:29 +08:00 via iPhone
    虽然觉得 celery 复杂但是不想换
    guog
        12
    guog  
       2017-12-28 22:24:01 +08:00 via Android
    @wcsjtu 我觉得恰好相反,不支持 py2 才是好评
    golmic
        13
    golmic  
       2017-12-28 22:46:27 +08:00 via Android
    @guog 支持。
    misaka19000
        14
    misaka19000  
       2017-12-28 22:56:53 +08:00
    问题是服务端代码如果我不开源外界没有办法知道我使用了该组件
    neoblackcap
        15
    neoblackcap  
       2017-12-28 23:01:13 +08:00
    居然这么多人觉得 celery 坑,的确 celery 的文档不怎么行。不过功能它倒是蛮强大。比如用 celery 就可以使用 pipeline + 不同类型的 worker 完成很多工作,代码可以简单地在一个地方整合。维护者可以简单地看出是如何被调用的。目前这个项目还是缺少对应的功能。
    est
        16
    est  
    OP
       2017-12-28 23:19:11 +08:00
    @misaka19000 不知道没关系,等别人知道了你想换的时候已经晚了。
    rogwan
        17
    rogwan  
       2017-12-28 23:23:55 +08:00 via Android
    @neoblackcap celery 的异步队列是不是每次更新,都要重启整个 Linux 服务器?貌似只重启 uwsgi 经常造成队列假死
    find456789
        18
    find456789  
       2017-12-29 00:10:33 +08:00
    搭车问问, pip install -U dramatiq[rabbitmq, watch] 后面跟了个 [] 括号,是什么语法糖
    neoblackcap
        19
    neoblackcap  
       2017-12-29 10:50:22 +08:00   1
    @rogwan 不是,你可以重启对应的 worker。建议你还是使用 systemd 来管理 celery,独立地启动关闭
    julyclyde
        20
    julyclyde  
       2017-12-29 10:58:19 +08:00
    @wcsjtu 不支持 py2 是加分项啊!可以主动淘汰 py2
    frostming
        21
    frostming  
       2017-12-29 11:12:25 +08:00
    @find456789 setup 函数里的 extra_requires,按需安装。看看 setuptools 的文档就知道了。
    fwee
        22
    fwee  
       2017-12-29 12:50:51 +08:00
    这协议和商业方式才是受到 sidekiq 启发吧
    fwee
        23
    fwee  
       2017-12-29 12:51:39 +08:00
    不对。。这协议比 sidekiq 狠啊
    allenling
        24
    allenling  
       2018-01-04 17:06:46 +08:00 via iPhone
    纯比速度的话~~未必吧
    https://github.com/allenling/magne
    est
        25
    est  
    OP
       2018-01-04 18:37:46 +08:00
    @allenling 这是你自己的轮子?

    我没理解错的话,magne 就是同进程用 curio 去 spawn 一个单独的 coroutine 去处理异步任务?
    allenling
        26
    allenling  
       2018-01-05 20:00:15 +08:00 via iPhone
    @est 嗯嗯~之前老早就像替掉 celery 了,代码看吐了~~然后测试了一下协程的情况~~

    我的思路是:每当有一个任务进来,就 spawn 一个协程去执行,所以基本上可以达到上千个协程”同时”执行~~
    要发挥到协程 spawn 很便宜的特性
    allenling
        27
    allenling  
       2018-01-05 20:09:23 +08:00 via iPhone
    @est 我 GitHub 重新整理了一下,把 dramatiq-gevent 的测试,和多进程协程测试的情况加了进去
    hanssx
        28
    hanssx  
       2020-05-11 15:22:33 +08:00
    celery 确实是坑,各种未解决 bug,直接报错报到 celery 本身的代码错误,比如这个未解决的问题,https://github.com/celery/celery/issues/3773
    est
        29
    est  
    OP
       2020-05-11 15:55:34 +08:00
    @hanssx 看上去就是连接已断开的问题。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3202 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 11:58 PVG 19:58 LAX 03:58 JFK 06:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86