有关 分布式任务处理 Celery 的小问题 - 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
NoBeeBee
V2EX    Python

有关 分布式任务处理 Celery 的小问题

  •  
  •   NoBeeBee 2017-07-19 23:13:38 +08:00 5252 次点击
    这是一个创建于 3010 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近一直在饬分布式任务处理的问题,在探索的路途中感觉发现了一个宝---celery。 感觉好牛逼的一个分布式任务处理的开源框架。但仔细找了找相关资料,除了国外官网的资料,目测国内百度上面搜了搜也都是一些入门的小栗子,完全没有体现出 celery 的正常实力水平。

    难道各位大神没有用过 celery 吗?
    还是我太 low 了,已经没人玩 celery 了。。。

    难道各位不用 分布式任务处理吗,还请各位给小弟指点迷津
    29 条回复    2018-11-07 10:22:19 +08:00
    Anlim
        1
    Anlim  
       2017-07-19 23:21:12 +08:00
    django + celery 使用中,但是 celery 有时候会莫名其妙的暂停。。。所以在坑中。
    chengxiao
        2
    chengxiao  
       2017-07-19 23:23:08 +08:00 via iPhone
    我也是,要用做个消息队列,但是国内教程很少,很笼统
    NoBeeBee
        3
    NoBeeBee  
    OP
       2017-07-19 23:47:41 +08:00
    看来还有有同一个战壕的战友, 我找到国内某位先驱写的 国外官网翻译,不管是版本较低( 3.1.7 ),而且只翻译了最基本一点儿,后面都没有翻译。
    最近常时不时查看国外官网,每次都要用绊脚的英语去 yy 官网用意,快累到死。
    真想接着这位大神的脚步一起把这玩意都翻译完,以造福大众。但感觉他那个站好像不更了,指路中----》
    http://docs.jinkan.org/docs/celery/
    就是上面这个站,好想找他一起接着撸 代码
    oBeeBee
        4
    NoBeeBee  
    OP
       2017-07-19 23:48:36 +08:00
    @Anlim 你是怎么个停法
    NoBeeBee
        5
    NoBeeBee  
    OP
       2017-07-19 23:51:17 +08:00
    @chengxiao 看来你也找了有一阵子真实案例了吧。有没有什么成效
    misaka19000
        6
    misaka19000  
       2017-07-20 03:39:38 +08:00 via Android
    官方文档差不多够用了吧
    cszeus
        7
    cszeus  
       2017-07-20 07:54:23 +08:00
    有个 http://python-rq.org/ 似乎更轻量一点。
    JasperYanky
        8
    JasperYanky  
       2017-07-20 09:42:47 +08:00
    我不会用 celery 不会用 rq 所以用了 huey https://github.com/coleifer/huey
    NoBeeBee
        9
    NoBeeBee  
    OP
       2017-07-20 09:44:00 +08:00
    @misaka19000 够用是够用,但对于英语战斗力较低的同学来说(譬如本人),还是有些望而却步。
    NoBeeBee
        10
    NoBeeBee  
    OP
       2017-07-20 09:47:07 +08:00
    @JasperYanky
    @cszeus 等我把 celery 这个坑趟平了,再去试试哦
    JasperYanky
        11
    JasperYanky  
       2017-07-20 09:50:45 +08:00
    @NoBeeBee celery 确实强大,我之前也用过, django 配合 celery 有个库,但是我一直搞不定特定任务进特定队列的功能,爬了好多文 官方文档也看了 就是解决不了。后来发现,我好像不需要这么强大的东西,直接用了最简单的异步框架,目前很完美
    JasperYanky
        12
    JasperYanky  
       2017-07-20 09:51:31 +08:00
    @chengxiao 试试 huey 相当好用
    FiveDDD
        13
    FiveDDD  
       2017-07-20 09:51:43 +08:00
    我是一直看文档做的,我感觉文档很详细了啊
    NoBeeBee
        14
    NoBeeBee  
    OP
       2017-07-20 09:55:14 +08:00
    @FiveDDD 国外官网吗?
    yongzhong
        15
    yongzhong  
       2017-07-20 09:56:05 +08:00
    python 项目基本 celery 标配啊,国内资料少那也是没办法的事,费尽心思写一篇 celery 的博客可能还不如一个 spring mvc 集成教程阅读来的多(非黑)
    stackoverflow+官方文档基本就能解决一切了
    NoBeeBee
        16
    NoBeeBee  
    OP
       2017-07-20 09:57:32 +08:00
    @JasperYanky 我前两天刚试了试 router 功能, 貌似可以跑通。要不要和你分享一下
    ylcc
        17
    ylcc  
       2017-07-20 09:57:37 +08:00
    我觉得长期是应该提升英文水平,短期可以看看董伟明的博客不知道有没有帮助 https://zhuanlan.zhihu.com/p/22304455
    reAsOn
        18
    reAsOn  
       2017-07-20 10:02:16 +08:00
    一直在用 celery,不过用的 redis 的 backend 没有遇到过啥坑,很稳定
    ultimate010
        19
    ultimate010  
       2017-07-20 10:36:12 +08:00
    分布式爬虫项目,对于 redis broker,耗时任务会出现卡死,简单粗暴重启解决。
    NoBeeBee
        20
    NoBeeBee  
    OP
       2017-07-20 12:45:15 +08:00
    @reAsOn 我用的 Rabbitmq ,感觉 这个 Rabiitmq 在别的地方没怎么见过,可能是我太孤陋寡闻了吧……
    NoBeeBee
        21
    NoBeeBee  
    OP
       2017-07-20 13:01:09 +08:00
    还想问大家目前都用的 celery 的哪个版本。
    我目前用的是 3.1.25 (因为用 4.0.0 时发现 Rabbitmq 和 celery 中的 flower 老是无法正常连接,别告诉我你们没有遇到
    -_-!)
    yongzhong
        22
    yongzhong  
       2017-07-20 13:06:17 +08:00
    @NoBeeBee 目测是你的 flower 和 celery 启动顺序问题导致看不到 worker
    Lihz
        23
    Lihz  
       2017-07-20 13:39:16 +08:00
    @Anlim
    broker 从 redis 换成 Rabiitmq
    异步任务中涉及网络连接的部分超时、重试机制要确定
    全局超时时间可以调小点
    glogo
        24
    glogo  
       2017-07-20 13:42:41 +08:00
    国外的文档也不难看懂啊...
    NoBeeBee
        25
    NoBeeBee  
    OP
       2017-07-20 14:22:23 +08:00
    @yongzhong 我仔细回想了一下,我遇到的应该是 4.0.0 celery 无法在 rabbitmq 中创建 queue,导致 所有 worker 能找到 broker 但是订阅不到 queue。flower 中是能看到 worker 的。
    NoBeeBee
        26
    NoBeeBee  
    OP
       2017-07-20 15:17:19 +08:00
    还有想问问大家都是怎么来运行大批量 worker 的:

    目前本人使用 docker compose 批量启动运行大量包含 celery 的容器 worker 来运行的,
    内部运行的程序主体 是通过 docker 中 volumes 文件映射 将 同一 host 主机中的 所有 worker 类 docker 全部映射到 同一文件路径,然后各 host 再通过 git 来更新迭代代码。(不知道大家都在用什么方法,感觉自己应该不是最 low 的一个吧)
    ifoolish
        27
    ifoolish  
       2017-07-20 16:07:41 +08:00
    最近正在用,选用 celery 主要是因为和 django 配合有 djcelery 这个现成的第三方扩展可以在 django 运行时动态添加删除定时任务
    Anlim
        28
    Anlim  
       2017-07-22 22:29:18 +08:00
    @Lihz 其实基本上 req 都设置 timeout, 目前基本上每天都上项目 Celery Flower 看看。看看日志,暂停了就简单粗暴的 restart。之前在一个新的项目中有读取不到 celery task,然后重启 redis 后竟然可以了:)。
    jerrychan807
        29
    jerrychan807  
       2018-11-07 10:22:19 +08:00
    @ifoolish 能解决时区的问题吗?我用的是 django-celery-beat,如果是默认的 UTC 时区,就没什么问题。改成东八区就出问题了~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     905 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 20:43 PVG 04:43 LAX 13:43 JFK 16:43
    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