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 · 4851 次点击
    这是一个创建于 2717 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近一直在捯饬分布式任务处理的问题,在探索的路途中感觉发现了一个宝---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/
    就是上面这个站,好想找他一起接着撸 代码
    NoBeeBee
        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   ·   实用小工具   ·   1073 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 19:05 · PVG 03:05 · LAX 11:05 · JFK 14:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.