Livid
289.86D
541.33D
V2EX  ›  RQ

关于长时间运行的 rqworker

  •  
  •   Livid ·
    PRO
    · Mar 14, 2014 · 10712 views
    This topic created in 4477 days ago, the information mentioned may be changed or developed.
    最近发现一个奇怪的问题,貌似如果一个 rqworker 运行的时间太长,就会丢失 queue 的名字?也就是从 rqinfo 里看的话,那个 worker 背后是没有名字的。

    有人也遇到过这个问题么?
    16 replies    1970-01-01 08:00:00 +08:00
    0bit
        1
    0bit  
       Mar 14, 2014
    很少用rqinfo看,一直用的rq-dashboard来看,但是queue太多的话,页面可能会刷新不了。
    humiaozuzu
        2
    humiaozuzu  
       Mar 14, 2014
    话说 Livid 有用 rq 跑 schedule 嘛?还是都用 crontab 做的?
    geew
        3
    geew  
       Mar 14, 2014
    @humiaozuzu rq 可以在程序里调用添加的 crontab也行吗?
    humiaozuzu
        4
    humiaozuzu  
       Mar 14, 2014
    @geew 这里他是单独开的一个进程跑 worker
    https://github.com/ui/rq-scheduler
    ericFork
        5
    ericFork  
       Mar 14, 2014
    借贴求教一下,有没有用 django-rq 的?你们是如何起多个 worker 的?
    muxi
        6
    muxi  
       Mar 14, 2014
    rq scheduler 不能删除,这个很蛋疼
    BeanYoung
        7
    BeanYoung  
       Mar 14, 2014 via iPhone   ❤️ 2
    估计是任务超时 任务执行代码里没有对JobTimeException处理 超时后依然在运行 导致worker的信息在redis里过期
    Livid
        8
    Livid  
    MOD
    OP
    PRO
       Mar 14, 2014
    @BeanYoung 多谢提示。这个确实是一个有可能发生的原因。
    Sokos
        9
    Sokos  
       Mar 14, 2014
    遇到过, 和 @BeanYoung 说的情况一样。
    Livid
        10
    Livid  
    MOD
    OP
    PRO
       Mar 14, 2014
    @humiaozuzu 我是用 supervisord 来启动 rqworker。
    zhy0216
        11
    zhy0216  
       Mar 14, 2014
    @Livid 可以给rq加个sentry, 然后就知道具体错误位置了~
    VYSE
        12
    VYSE  
       Mar 14, 2014   ❤️ 2
    @BeanYoung 不过我用默认的rqworker命令行, JobTimeoutException会被handle_exception处理,然后置为failed,enqueue得到的result也是能拿到JobTimeoutException,理论上这时queue还会正常工作。

    从我这来看,消失的worker过段时间还会出现,可能是signal.alarm 超时信号没有返回到handler,rqworker还是等任务超时结束后才继续运行。
    VYSE
        13
    VYSE  
       Mar 14, 2014   ❤️ 1
    @VYSE 果然是worker里的某个native ext直接忽略SIGINT/SIGALRM等信号,还是改rq开新进程monitor woker进程靠谱些。
    Livid
        14
    Livid  
    MOD
    OP
    PRO
       Mar 14, 2014
    @VYSE 给他们官方来一发 issue?

    https://github.com/nvie/rq
    VYSE
        15
    VYSE  
       Mar 14, 2014
    https://github.com/nvie/rq/issues/323
    不过不报希望会搞定,上次报另外一个就直接close了.
    Livid
        16
    Livid  
    MOD
    OP
    PRO
       Mar 15, 2014
    所以我估计我这里问题的根源是,task 里的 requests 发的请求没有加 timeout 设置。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3246 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 12:24 · PVG 20:24 · LAX 05:24 · JFK 08:24
    ♥ Do have faith in what you're doing.