728x90
안녕하세요, 다람쥐입니다.
스케쥴링 작업을 위해 django-rq 를 테스트하던 중에 아래와 같은 오류를 맞닥뜨렸습니다.
09:20:09 Worker rq:worker:2dd6fe37266942a3943c0f48ec900239: started, version 1.10.1
09:20:09 Subscribing to channel rq:pubsub:2dd6fe37266942a3943c0f48ec900239
09:20:09 *** Listening on default...
09:20:09 Trying to acquire locks for default
09:20:09 Cleaning registries for queue: default
09:20:09 Scheduler for default started with PID 58103
09:21:12 default: ~~~
objc[58202]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called.
objc[58202]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
09:21:12 Moving job to FailedJobRegistry (work-horse terminated unexpectedly; waitpid returned 6)
'work-horse terminated unexprectedly; waitpid returned 6' 예외를 보고서 구글링을 해보았을 때
메모리 영역이 꽉 차면 그럴 수도 있다고 나와 있었는데요.
마침 메모리가 꽉 찼길래 청소하고 다시 시도해봤더니 같은 오류가 발생했습니다.
그 위로 눈을 돌려 '[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called.' 오류를 검색해보았습니다.
다른 쓰레드와 fork() 함수가 같이 일어날 때 무언가 예외가 발생하는 듯 보이는데요.
아래 'OBJC_DISABLE_INITIALIZE_FORK_SAFETY' 환경 변수를 YES 로 설정하면 해결됩니다.
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
도커 환경에서도 돌아가야 하므로 아래처럼 환경 변수를 설정했습니다.
# env for Redis Queue
ENV OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
'Python > Python 자료실' 카테고리의 다른 글
Python 3.10 릴리즈 노트 #2. 더 나은 예외 메시지 (0) | 2022.02.07 |
---|---|
Python 3.10 릴리즈 노트 #1. Parenthesized Context Manager (0) | 2022.02.06 |
파이참(PyCharm)에 모든 파일이 노란색으로 보호된 파일이라고 나타나는 오류 해결법 (0) | 2022.01.22 |
[Django Pycharm 오류] Cannot find declaration to go to (0) | 2021.01.12 |
댓글