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

2017-06-19 20:43:00 +08:00
 agentwx
查看 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 的配置有问题么?
6602 次点击
所在节点    Python
15 条回复
misaka19000
2017-06-19 21:29:33 +08:00
只用过 Redis 的路过帮顶。。。
clarkchen
2017-06-19 21:37:08 +08:00
CELERY_RESULT_BACKEND 你要不指到 redis 里面,,,
WangYanjie
2017-06-19 21:42:11 +08:00
用 countdown 了吗?
agentwx
2017-06-19 22:59:33 +08:00
@WangYanjie 我在 task 里面做的只是调用了另外的方法,countdown 是在什么时候使用呢? 谢谢
shellfly
2017-06-19 23:07:07 +08:00
RabbitMQ 不是自带了一个挺好用的 Management Plugin 吗,配置好了就容易看到具体是什么消息堆住了
macroideal
2017-06-20 07:28:25 +08:00
处理了没 acc?
NaVient
2017-06-20 09:07:06 +08:00
设置了消息应答了吗,消息需要 ack
WangYanjie
2017-06-20 10:26:23 +08:00
unacknowledged 指的是,消息发给 consumer 了,但是没有 ack ;正常情况是会有的,如果你使用了延迟任务,会更多一点;
agentwx
2017-06-20 12:41:10 +08:00
@WangYanjie 嗯 , 但是现在是 unacknowledged 的值是 0,那我理解的话,应该 ready 和 total 应该也没有才对。
为啥 ready 和 total 的值是那么多,而且感觉是这个消息还是在 rabbitmq 里存着的,不然为啥进程的内存占用那么多。

按我的理解,如果 unacknowledged 的为 0 了, 意味这消息被出来了,不会被存到某个队列里才对。
agentwx
2017-06-20 12:42:12 +08:00
@NaVient unacknowledged 的值为 0 了,这个不是表示已经应答了么?
agentwx
2017-06-20 12:42:43 +08:00
@macroideal acc 是怎么个处理法?求指导
macroideal
2017-06-20 13:14:37 +08:00
@agentwx #11 就是发一个 ack,回去
agentwx
2017-06-20 20:39:08 +08:00
已经解决了,升级了 rabbitmq 到 3.3 以上版本就可以了。
之前用的是 rabbitmq 3.1 的版本,然后 celery 是 3.1 的版本
WangYanjie
2017-06-21 10:17:49 +08:00
@agentwx unack 只是一个状态,代表有 consumer 消费了这个消息,但是还没确认;只有当 consumer 确认之后,RMQ 才不用再存储这个消息
agentwx
2017-06-21 15:45:33 +08:00
@WangYanjie 谢谢,原来如此

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/369635

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX