celery 任务突然不执行是为什么?

2015 年 12 月 6 日
 dai269619118

别人推送很多消息给我,用 tornado 接收然后传到 celery 里面处理
celery 进程刚启动还是没问题,运行一天半天 突然里面的任务都不处理了
重新启动下 就能把之前接收到的推送 一个个继续处理。。。
看不出是什么问题。。
打算修改下配置的处理任务的超时时间,看看能不能解决这个问题。
有人遇到过这种情况吗

7976 次点击
所在节点    Python
21 条回复
KyleMeow
2015 年 12 月 6 日
遇到问题,先看 log 。
shenghe
2015 年 12 月 6 日
我们也碰到了这个问题,打算换
taozle
2015 年 12 月 6 日
同样遇到了这个问题 暂时没找出来是什么原因
koykoi
2015 年 12 月 6 日
什么 broker?
neoblackcap
2015 年 12 月 6 日
猜测是有个任务抛异常,没有捕捉,就那样所有 worker 挂了
gamexg
2015 年 12 月 6 日
碰到过,不过我那时 redis 在国外 celery 在国内之间网络不稳定,之后网络不好的地方就不再用 celery 了。
本地一直没碰到问题。
IMRES
2015 年 12 月 6 日
碰过一次,还碰过一次和 broker 的连接断了但没有自动重连的情况。
rale
2015 年 12 月 6 日
以前遇到过某个 python 的包里面没有默认设置任务超时时间,导致整个进程挂起的情况。
dai269619118
2015 年 12 月 6 日
@koykoi redis
dai269619118
2015 年 12 月 6 日
@neoblackcap 程序也没异常 特意把 celery 执行 zai 窗口上
dai269619118
2015 年 12 月 6 日
@IMRES 你解决了嘛?
dai269619118
2015 年 12 月 6 日
@rale python 包能设置任务超时嘛?能贴段代码吗
defage
2015 年 12 月 6 日
用 celery flower 把已有任务都看下, 或者自己到 broker 里查就知道了,一路顺着理一下就知道原因了,消息传递的过程无非就那么几个过程
dai269619118
2015 年 12 月 6 日
@defage 恩恩 正打算下来看下 非常感谢
SergioChan
2015 年 12 月 6 日
应该是 worker 挂了。。你看过 celery 的日志了么。。里面怎么说的- -
rale
2015 年 12 月 6 日
@dai269619118 我指的不是包的超时,是我的表达有问题,我是说包里面的一些函数,比如 urlopen 函数,在原来的包里默认是没有设置超时的。而且这个函数在没有设置超时的大多数情况下,是正常能用的,但是有时候会遇到等待某一个请求的情况,而且这个请求很可能已经丢掉了。我以前是通过查看 /proc/pid/wchan 看是什么情况。下面是它其中的几种状态:

poll_schedule_timeout 是在等待 I/O,不可能使用的是非阻塞 I/O.其他很多进程的状态就是这个,这是一个比较正常的状态。

futex_wait_queue_me:表示因为资源的问题产生的锁。
基本可以排除死锁的问题,因为如果是死锁,那么就应该是这个状态。

sk_wait_data:wait for some data on a network socket.根据这个可以判断该进程是在等待某一个经过 socket 传输的资源。
restran
2015 年 12 月 6 日
在开发的时候有遇到 Worker 会自动结束的问题,但也一直不知道为什么。生产环境上我用 supervisor 管理 celery worker 进程,可以自动重启,目前暂时没遇到问题。
dai269619118
2015 年 12 月 6 日
@SergioChan
@rale
@restran
非常感谢!已经知道检查哪几个问题了
liuxiaoxiaochen
2015 年 12 月 7 日
我觉得 @SergioChan 说的是对的 worker 挂了
liyj144
2015 年 12 月 7 日
建议 celery 通过 flower 管理起来,这样大部分问题也能直接查到了。

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

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

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

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

© 2021 V2EX