记一次celery worker hang debug
记一次celery worker hang debug 【写在前面】: 本文最终并没有debug出为什么卡住,虽然换了种方案解决了问题。
引入celery是为了调用京东api来做发货行为,以便提供给电商业务下快递单,然而在这个过程中,踩了一些坑(此文大概是2018年底的记录)
最初的配置,使用supervisor来管理celery进程,并且在代码更新之后,使用supervisorctl restart {$APP_NAME}来更新代码(celery并不支持gracefully reload,也暂时没有用其他更优雅的方案,待更深入的测试)
发现问题 线上的celery总是一段时间之后,就没有接受新的请求,celery beat还在发消息,python代码也在发消息存到broker(redis)里面,但消息一直没被消费
debug过程 找出celery worker的pid, www-data 6329 0.0 0.6 157228 50640 ? S 2018 0:03 /home/ubuntu/.pyenv/versions/3.7.1/envs/ems-admin-api/bin/python /home/ubuntu/.pyenv/versions/ems-admin-api/bin/celery -A settings beat -s /tmp/celerybeat-schedule --pidfile= -l info www-data 10004 0.1 0.6 162456 53804 ? S Jan02 4:12 /home/ubuntu/.pyenv/versions/3.7.1/envs/ems-admin-api/bin/python /home/ubuntu/.pyenv/versions/ems-admin-api/bin/celery -A settings worker --autoscale=8,4 -l info www-data 18317 0.0 0.6 173032 56280 ? S Jan03 0:04 /home/ubuntu/.pyenv/versions/3.7.1/envs/ems-admin-api/bin/python /home/ubuntu/.pyenv/versions/ems-admin-api/bin/celery -A settings worker --autoscale=8,4 -l info www-data 18318 0.……