V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

celery 配合 rabbitmq 进行异步任务时,发现 rabbitmq 里消息的数量是一直增加的,但是这些消息其实也已经被 task 处理掉了。

  •  
  •   agentwx · 124 天前 · 1004 次点击
    这是一个创建于 124 天前的主题,其中的信息可能已经有所发展或是发生改变。
    查看 rabbimtq 自带的后台,发现 Queued messages 里面,ready 和 total 的数量都达到了 5000 多,unacknowledged 的值为 0。不过实际在工作的时候,unacknowledged 的值会变化的,但是最后会变成 0
    celery 的配置也没有特殊的地方,就只设置了如下的内容
    CELERY_IMPORTS = ('testtasks',)
    BROKER_URL = 'amqp://guest:guest@localhost:5672//'
    CELERY_RESULT_BACKEND = 'amqp://'

    然后看系统的资源,erl 的进程内存比较大,大概暂用了 300 多 M
    是我这边 celery 的配置有问题么?
    15 回复  |  直到 2017-06-21 15:45:33 +08:00
        1
    misaka19000   124 天前 via Android
    只用过 Redis 的路过帮顶。。。
        2
    clarkchen   124 天前
    CELERY_RESULT_BACKEND 你要不指到 redis 里面,,,
        3
    WangYanjie   124 天前
    用 countdown 了吗?
        4
    agentwx   124 天前
    @WangYanjie 我在 task 里面做的只是调用了另外的方法,countdown 是在什么时候使用呢? 谢谢
        5
    shellfly   124 天前
    RabbitMQ 不是自带了一个挺好用的 Management Plugin 吗,配置好了就容易看到具体是什么消息堆住了
        6
    macroideal   124 天前 via iPhone
    处理了没 acc?
        7
    NaVient   124 天前
    设置了消息应答了吗,消息需要 ack
        8
    WangYanjie   124 天前
    unacknowledged 指的是,消息发给 consumer 了,但是没有 ack ;正常情况是会有的,如果你使用了延迟任务,会更多一点;
        9
    agentwx   124 天前
    @WangYanjie 嗯 , 但是现在是 unacknowledged 的值是 0,那我理解的话,应该 ready 和 total 应该也没有才对。
    为啥 ready 和 total 的值是那么多,而且感觉是这个消息还是在 rabbitmq 里存着的,不然为啥进程的内存占用那么多。

    按我的理解,如果 unacknowledged 的为 0 了, 意味这消息被出来了,不会被存到某个队列里才对。
        10
    agentwx   124 天前
    @NaVient unacknowledged 的值为 0 了,这个不是表示已经应答了么?
        11
    agentwx   124 天前
    @macroideal acc 是怎么个处理法?求指导
        12
    macroideal   124 天前
    @agentwx #11 就是发一个 ack,回去
        13
    agentwx   123 天前
    已经解决了,升级了 rabbitmq 到 3.3 以上版本就可以了。
    之前用的是 rabbitmq 3.1 的版本,然后 celery 是 3.1 的版本
        14
    WangYanjie   123 天前   ♥ 1
    @agentwx unack 只是一个状态,代表有 consumer 消费了这个消息,但是还没确认;只有当 consumer 确认之后,RMQ 才不用再存储这个消息
        15
    agentwx   123 天前
    @WangYanjie 谢谢,原来如此
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   1618 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 56ms · UTC 12:04 · PVG 20:04 · LAX 05:04 · JFK 08:04
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1