最近发现一个奇怪的问题,貌似如果一个 rqworker 运行的时间太长,就会丢失 queue 的名字?也就是从 rqinfo 里看的话,那个 worker 背后是没有名字的。
有人也遇到过这个问题么?
有人也遇到过这个问题么?
|
0bitMar 14, 2014
1
很少用rqinfo看,一直用的rq-dashboard来看,但是queue太多的话,页面可能会刷新不了。
|
|
humiaozuzuMar 14, 2014
2
话说 Livid 有用 rq 跑 schedule 嘛?还是都用 crontab 做的?
|
|
geewMar 14, 2014
3
@humiaozuzu rq 可以在程序里调用添加的 crontab也行吗?
|
|
humiaozuzuMar 14, 2014
4
|
|
ericForkMar 14, 2014
5
借贴求教一下,有没有用 django-rq 的?你们是如何起多个 worker 的?
|
|
muxiMar 14, 2014
6
rq scheduler 不能删除,这个很蛋疼
|
|
7
估计是任务超时 任务执行代码里没有对JobTimeException处理 超时后依然在运行 导致worker的信息在redis里过期
|
|
10
@humiaozuzu 我是用 supervisord 来启动 rqworker。
|
|
12
@BeanYoung 不过我用默认的rqworker命令行, JobTimeoutException会被handle_exception处理,然后置为failed,enqueue得到的result也是能拿到JobTimeoutException,理论上这时queue还会正常工作。
从我这来看,消失的worker过段时间还会出现,可能是signal.alarm 超时信号没有返回到handler,rqworker还是等任务超时结束后才继续运行。 |
|
13
@VYSE 果然是worker里的某个native ext直接忽略SIGINT/SIGALRM等信号,还是改rq开新进程monitor woker进程靠谱些。
|
|
14
|
|
VYSEMar 14, 2014
15
https://github.com/nvie/rq/issues/323
不过不报希望会搞定,上次报另外一个就直接close了. |
|
16
所以我估计我这里问题的根源是,task 里的 requests 发的请求没有加 timeout 设置。
|