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
dai269619118
V2EX  ›  Python

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

  •  
  •   dai269619118 · 2015-12-06 10:48:34 +08:00 · 6968 次点击
    这是一个创建于 3268 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    21 条回复    2015-12-11 22:10:47 +08:00
    KyleMeow
        1
    KyleMeow  
       2015-12-06 11:14:50 +08:00
    遇到问题,先看 log 。
    shenghe
        2
    shenghe  
       2015-12-06 11:26:26 +08:00 via Android   ❤️ 1
    我们也碰到了这个问题,打算换
    taozle
        3
    taozle  
       2015-12-06 11:47:03 +08:00 via iPhone   ❤️ 1
    同样遇到了这个问题 暂时没找出来是什么原因
    koykoi
        4
    koykoi  
       2015-12-06 11:51:48 +08:00   ❤️ 1
    什么 broker?
    neoblackcap
        5
    neoblackcap  
       2015-12-06 12:30:47 +08:00 via iPhone   ❤️ 1
    猜测是有个任务抛异常,没有捕捉,就那样所有 worker 挂了
    gamexg
        6
    gamexg  
       2015-12-06 14:14:30 +08:00   ❤️ 1
    碰到过,不过我那时 redis 在国外 celery 在国内之间网络不稳定,之后网络不好的地方就不再用 celery 了。
    本地一直没碰到问题。
    IMRES
        7
    IMRES  
       2015-12-06 14:35:02 +08:00   ❤️ 1
    碰过一次,还碰过一次和 broker 的连接断了但没有自动重连的情况。
    rale
        8
    rale  
       2015-12-06 14:54:45 +08:00   ❤️ 1
    以前遇到过某个 python 的包里面没有默认设置任务超时时间,导致整个进程挂起的情况。
    dai269619118
        9
    dai269619118  
    OP
       2015-12-06 15:04:39 +08:00 via iPhone
    @koykoi redis
    dai269619118
        10
    dai269619118  
    OP
       2015-12-06 15:06:10 +08:00 via iPhone
    @neoblackcap 程序也没异常 特意把 celery 执行 zai 窗口上
    dai269619118
        11
    dai269619118  
    OP
       2015-12-06 15:07:05 +08:00 via iPhone
    @IMRES 你解决了嘛?
    dai269619118
        12
    dai269619118  
    OP
       2015-12-06 15:11:18 +08:00 via iPhone
    @rale python 包能设置任务超时嘛?能贴段代码吗
    defage
        13
    defage  
       2015-12-06 16:09:39 +08:00   ❤️ 1
    用 celery flower 把已有任务都看下, 或者自己到 broker 里查就知道了,一路顺着理一下就知道原因了,消息传递的过程无非就那么几个过程
    dai269619118
        14
    dai269619118  
    OP
       2015-12-06 16:16:35 +08:00 via iPhone
    @defage 恩恩 正打算下来看下 非常感谢
    SergioChan
        15
    SergioChan  
       2015-12-06 17:36:17 +08:00   ❤️ 1
    应该是 worker 挂了。。你看过 celery 的日志了么。。里面怎么说的- -
    rale
        16
    rale  
       2015-12-06 17:50:38 +08:00   ❤️ 1
    @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
        17
    restran  
       2015-12-06 17:54:53 +08:00   ❤️ 1
    在开发的时候有遇到 Worker 会自动结束的问题,但也一直不知道为什么。生产环境上我用 supervisor 管理 celery worker 进程,可以自动重启,目前暂时没遇到问题。
    dai269619118
        18
    dai269619118  
    OP
       2015-12-06 20:01:41 +08:00 via iPhone
    @SergioChan
    @rale
    @restran
    非常感谢!已经知道检查哪几个问题了
    liuxiaoxiaochen
        19
    liuxiaoxiaochen  
       2015-12-07 10:10:23 +08:00   ❤️ 2
    我觉得 @SergioChan 说的是对的 worker 挂了
    liyj144
        20
    liyj144  
       2015-12-07 13:33:21 +08:00   ❤️ 1
    建议 celery 通过 flower 管理起来,这样大部分问题也能直接查到了。
    julyclyde
        21
    julyclyde  
       2015-12-11 22:10:47 +08:00
    据我的经验,是 celery 这个软件的质量问题
    加个--time-limit 让它超时重启就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1150 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:45 · PVG 07:45 · LAX 15:45 · JFK 18:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.