[Celery]exited with code 247 with celery using torch

일단 해볼게·2022년 10월 5일
0

celery worker에 task를 할당하고 실행하던 도중 계속 docker container가 다운되는 오류가 발생했다. 로그를 찍어보니 torch를 사용하는 코드에서 종료가 되는 것을 발견했다.

원인

stackoverflow에서 찾다가 같은 현상이 발생하는 글을 발견했다. celery에서 사용되는 프로세스(또는 쓰레드)가 default 옵션이 prefork인데 이 옵션에서는 torch 에러가 발생한다고 한다.

해결방법

--pool 옵션의 deault값을 바꿔주면 된다.
기존에 docker에서 celery container를 실행하는 명령어다.

celery -A {celery를 실행할 프로젝트} worker --loglevel=info

여기에서 solo pool을 사용하는 명령어로 변경하면 된다.

celery -A {celery를 실행할 프로젝트} worker --loglevel=info --pool=solo

예시

celery -A config.celery worker --loglevel=info --pool=solo

적용한 코드

https://github.com/2022-SeongNam-Pre-Internship-TeamE/PhoToon/blob/main/docker-compose.prod.yml

참고

https://stackoverflow.com/questions/63645357/using-pytorch-with-celery
https://www.distributedpython.com/2018/10/26/celery-execution-pool/

profile
시도하고 More Do하는 백엔드 개발자입니다.

1개의 댓글

comment-user-thumbnail
2023년 4월 6일

celery에서 torch나 tensorflow와 같은 딥러닝이 돌아가나요?

답글 달기