V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Dec 28, 2017 · 8745 views
    This topic created in 3046 days ago, the information mentioned may be changed or developed.
    有多年专业 celery 使用经验的罗马尼亚工程师 Bogdan Popa 觉得 Celery 就是个大烂坑。于是又发明了个 python 异步任务框架轮子 dramatiq

    https://dramatiq.io/motivation.html

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

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

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

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

    我的思路是:每当有一个任务进来,就 spawn 一个协程去执行,所以基本上可以达到上千个协程”同时”执行~~
    要发挥到协程 spawn 很便宜的特性
    allenling
        27
    allenling  
       Jan 5, 2018 via iPhone
    @est 我 GitHub 重新整理了一下,把 dramatiq-gevent 的测试,和多进程协程测试的情况加了进去
    hanssx
        28
    hanssx  
       May 11, 2020
    celery 确实是坑,各种未解决 bug,直接报错报到 celery 本身的代码错误,比如这个未解决的问题,https://github.com/celery/celery/issues/3773
    est
        29
    est  
    OP
       May 11, 2020
    @hanssx 看上去就是连接已断开的问题。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1019 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 92ms · UTC 18:05 · PVG 02:05 · LAX 11:05 · JFK 14:05
    ♥ Do have faith in what you're doing.