나는 celery 4
과 RabbitMQ
을 중개인으로 사용하고 있습니다. 제한된 Queue
(크기 == 200)입니다. 그것은 만약의 범위 < = 크기 작동브로커 대기열이 가득 찼을 때 Python Celery task.delay()
for i in range(200):
tasks.delay(i)
:처럼 내 주요 코드가 보인다. 나는 이런 식으로 뭔가 호출하는 경우 :
for i in range(2000):
tasks.delay(i)
그리고 크기 제한이 200을의 Queue
이 가득하고 작업의 나머지 부분은 건너 뜁니다.
누구든지이 상황을 어떻게 처리 할 수 있습니까? 나는 Queue
이 무료 일 때까지 기다릴 필요가 있고 또 다른 일은 insert
이다.
감사합니다.
완벽하게 고맙습니다. 내가 redis를 사용하면 동일한 문제가 발생합니까? 지연이 대기열이 무료가 될 때까지 대기 할 것입니다. – wilima
레디 스는 조금 다르다고 생각합니다. Redis는 키/값 데이터베이스 일 뿐이므로 RabbitMQ와 같은 대기열 개념을 실제로 가지고 있지 않습니다. 즉, Redis에는 대기열 제한이 없지만 Redis에 할당하는 메모리 및/또는 디스크 공간의 양은 Reids에 제한이 있습니다. 셀러리가 확장 성이 뛰어나 필요에 따라 더 많은 작업자를 추가 할 수있는 이유입니다. 희망이 도움이 – xirdneh
@wilima, btw. 대답이 도움이된다면. 올바른 답으로 표시 할 수 있습니까? 감사. – xirdneh