TL;博士:
我正在排队完成简单的任务
celeryd
通过
beanstalkd
经纪人,使用
task.delay
(例如。
myNotifyTask.delay()
而不是
myNotifyTask()
). 尽管延迟值应该是即时的,但执行任务大约需要一个小时(而执行任务只需要几秒钟)。
根据我的观察,这些任务似乎确实是在
豆状茎
,但要呆在
ready
在很长一段时间内。尽管设置了
CELERYD_CONCURRENCY = 8
.查看时
豆状茎
的日志,我收到关于的错误
read(): Connection reset by peer
,但任务最终会执行。
你知道为什么会发生这种情况吗?
详细信息如下。
使用豆茎版本1.4.6,芹菜版本3.0.20。
豆茎日志条目如下所示:
/usr/bin/beanstalkd: prot.c:709 in check_err: read(): Connection reset by peer
尝试使用时
celery
诊断问题:
> celery -b "beanstalk://beanstalk_server:11300" status
Error: No nodes replied within time constraint.
连接到时
豆状茎
通过
telnet
,我明白了
current-jobs-ready: 343
,这表明工作陷入了困境
准备好的
状态(不是
delayed
). 以下是完整的输出:
> telnet localhost 11300
stats
OK 850
---
current-jobs-urgent: 343
current-jobs-ready: 343
current-jobs-reserved: 0
current-jobs-delayed: 0
current-jobs-buried: 0
cmd-put: 2484
cmd-peek: 0
cmd-peek-ready: 7
cmd-peek-delayed: 1
cmd-peek-buried: 1
cmd-reserve: 0
cmd-reserve-with-timeout: 52941
cmd-delete: 2141
cmd-release: 0
cmd-use: 2485
cmd-watch: 42
cmd-ignore: 40
cmd-bury: 0
cmd-kick: 0
cmd-touch: 0
cmd-stats: 497655
cmd-stats-job: 2141
cmd-stats-tube: 3
cmd-list-tubes: 2
cmd-list-tube-used: 1
cmd-list-tubes-watched: 52954
cmd-pause-tube: 0
job-timeouts: 0
total-jobs: 2484
max-job-size: 65535
current-tubes: 3
current-connections: 6
current-producers: 2
current-workers: 2
current-waiting: 1
total-connections: 502958
pid: 989
version: 1.4.6
rusage-utime: 45.778861
rusage-stime: 56.595537
uptime: 2489047
binlog-oldest-index: 0
binlog-current-index: 0
binlog-max-size: 10485760
之后不久:
stats-tube celery
OK 257
---
name: celery
current-jobs-urgent: 348
current-jobs-ready: 348
current-jobs-reserved: 0
current-jobs-delayed: 0
current-jobs-buried: 0
total-jobs: 2739
current-using: 3
current-watching: 1
current-waiting: 0
cmd-pause-tube: 0
pause: 0
pause-time-left: 0