온라인 게임에 장고와 함께 셀러리를 사용하고 있습니다. 나는 셀러리이 답변에 따라 사용할 수 및 실행 여부를 확인하기 위해 미들웨어를 작성했습니다셀러리 사용 가능 여부 확인
: Detect whether Celery is Available/Running
내 코드는 실제로 다음과 같습니다
from celery.task.control import inspect
class CeleryCheckMiddleware(object):
def process_request(self, request):
insp = inspect().stats()
if not insp:
return render(...)
else:
return None
하지만 주석에주의를 잊었다 그 대답의 맨 아래에, 위의 내용이 실행될 때마다 위의 두 개의 reply.celery.pidbox 대기열이 rabbitmq에 추가된다는 것을 발견했습니다. 이로 인해 rabbitmq의 메모리 사용이 점차 증가하게되었습니다. '
저는줄에서 시작하여 OSError: [Errno 4] Interrupted system call
으로 끝나는 500 개의 오류가 있음을 알게되었습니다 (하루 후 만!).
셀러리가 사용 가능하고 실행 중인지 확인하는 메모리 안전 방법이 있습니까?
이 해결책이 있습니까? 이전 호출에서 사용한 메모리를 플러시 할 수 있습니까? –
@TimTisDall은 내가 찾은 것이 아닙니다. 나는 새 작업을 받아 들일 수 없도록 업데이트하는 동안 사이트를 유지 관리 모드로 전환하는 데 주력했습니다. – heidi
아마도 중간 영역이 작동 할 것입니다 ... 미들웨어는 업데이트를 수행 할 때만 검사를 수행하고 그렇지 않으면 검사를 중지하십시오. 그러나'celery'가 중단 될 때 제어하는 사람이라면 유지 관리 화면을 수동으로 올려 놓는 것이 더 중요합니다. –