2017-11-08 3 views
0

RabbitMQ를 브로커로 사용하고 Redis를 백엔드로 사용하는 Celery 태스크를 설정했습니다. 실행 후 Redis 서버가 여전히 많은 메모리를 사용하고있는 것으로 나타났습니다. 검사를 통해 나는 생성 된 각 작업에 대한 키가 여전히 있음을 발견했습니다.Redis가 Celery 실행 후 데이터를 가지고 있습니다.

셀레 리에 응답을받은 후에 만 ​​이러한 키를 정리할 수있는 방법이 있습니까? 일부 MessageBroker는 acks를 사용합니다. 셀러리의 redis backend에 해당하는 것이 있습니까?

답변

0

불행히도 셀러리에는 백엔드에 대한 대답이 없으므로 내 프로젝트를위한 최선의 해결책은 내가 완료 한 후에 내 응답을 잊어 버리는 것입니다.

0

예, result_expires을 사용하십시오. 문서에 기록 된대로 그 셀러리 이길뿐만 아니라 실행해야합니다주의 사항 :

내장 된 그 셀러리 비트를 가정하고,이 시간 (celery.backend_cleanup) 후 결과를 삭제합니다 정기 작업이 활성화됩니다. 작업은 매일 오전 4시에 실행됩니다.

+0

비동기 결과에서 get을 호출 한 후에 수행 할 수있는 방법이 있습니까? 내 현재의 솔루션은 내가 결과를 완료 한 후에 잊어 버리는 것이다. – asbumste

+0

값을 1 (초)로 설정하면 작업이 끝난 직후에 삭제됩니다 – ItayB

+0

또는 필요하지 않은 경우 백엔드 결과를 사용하지 마십시오. – ItayB

관련 문제