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

2015-12-06 10:48:34 +08:00
 dai269619118

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

7018 次点击
所在节点    Python
21 条回复
KyleMeow
2015-12-06 11:14:50 +08:00
遇到问题,先看 log 。
shenghe
2015-12-06 11:26:26 +08:00
我们也碰到了这个问题,打算换
taozle
2015-12-06 11:47:03 +08:00
同样遇到了这个问题 暂时没找出来是什么原因
koykoi
2015-12-06 11:51:48 +08:00
什么 broker?
neoblackcap
2015-12-06 12:30:47 +08:00
猜测是有个任务抛异常,没有捕捉,就那样所有 worker 挂了
gamexg
2015-12-06 14:14:30 +08:00
碰到过,不过我那时 redis 在国外 celery 在国内之间网络不稳定,之后网络不好的地方就不再用 celery 了。
本地一直没碰到问题。
IMRES
2015-12-06 14:35:02 +08:00
碰过一次,还碰过一次和 broker 的连接断了但没有自动重连的情况。
rale
2015-12-06 14:54:45 +08:00
以前遇到过某个 python 的包里面没有默认设置任务超时时间,导致整个进程挂起的情况。
dai269619118
2015-12-06 15:04:39 +08:00
@koykoi redis
dai269619118
2015-12-06 15:06:10 +08:00
@neoblackcap 程序也没异常 特意把 celery 执行 zai 窗口上
dai269619118
2015-12-06 15:07:05 +08:00
@IMRES 你解决了嘛?
dai269619118
2015-12-06 15:11:18 +08:00
@rale python 包能设置任务超时嘛?能贴段代码吗
defage
2015-12-06 16:09:39 +08:00
用 celery flower 把已有任务都看下, 或者自己到 broker 里查就知道了,一路顺着理一下就知道原因了,消息传递的过程无非就那么几个过程
dai269619118
2015-12-06 16:16:35 +08:00
@defage 恩恩 正打算下来看下 非常感谢
SergioChan
2015-12-06 17:36:17 +08:00
应该是 worker 挂了。。你看过 celery 的日志了么。。里面怎么说的- -
rale
2015-12-06 17:50:38 +08:00
@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-06 17:54:53 +08:00
在开发的时候有遇到 Worker 会自动结束的问题,但也一直不知道为什么。生产环境上我用 supervisor 管理 celery worker 进程,可以自动重启,目前暂时没遇到问题。
dai269619118
2015-12-06 20:01:41 +08:00
@SergioChan
@rale
@restran
非常感谢!已经知道检查哪几个问题了
liuxiaoxiaochen
2015-12-07 10:10:23 +08:00
我觉得 @SergioChan 说的是对的 worker 挂了
liyj144
2015-12-07 13:33:21 +08:00
建议 celery 通过 flower 管理起来,这样大部分问题也能直接查到了。

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

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

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

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

© 2021 V2EX