셀레리 작업 1 개와 작업자 5 명과 함께 표준 Django + Rabbitmq + Celery 설정이 있습니다.장고의 모든 셀러리 작업자/메모리 캐시에서 전역으로 액세스 할 수있는 객체
작업 업로드 (비트 단순화) 큰 파일 (~ 100MB)이 여러 원격 PC에 비동기 적으로 업로드됩니다.
모든 작업/작업자가 큰 파일을 메모리에 별도로로드하기 때문에 많은 양의 메모리를 사용하는 대신 모든 작업이 정상적으로 작동합니다.
내가하고 싶은 것은 일종의 캐시를 사용하여 모든 작업에 액세스 할 수 있도록하는 것입니다. 즉, 파일을 한 번만로드하십시오. locomem에 기반한 Django 캐싱은 완벽 할 것이지만 문서와 같이 : "각 프로세스는 자체적 인 캐시 인스턴스를 가질 것입니다."그리고이 캐시는 모든 작업자가 액세스 할 수 있어야합니다.
#2129820에 설명 된 셀러 리 신호로 시도했지만 그게 내가 필요한 것은 아닙니다.
그래서 질문은 : 셀러리에서 뭔가를 정의 할 수있는 방법이 있습니까 (예 : dict에 기반한 클래스와 같이 파일 또는 smth를로드 할 수있는 클래스와 같은). 아니면이 상황에서 사용할 수있는 장고 트릭이 있습니까?
감사합니다.
필자는 memcached에 저장할 수있는 가장 큰 값은 1MB라고 생각했습니다. –
왜 파일을 분할하지 않습니까? 모든 작업에이 파일의 모든 비트에 대한 액세스가 필요한 경우 매번 파일을로드하지 않아도됩니다. –
글쎄, 나는 그것이 가능하기를 바라고있다. :). 파티셔닝은 복잡성을 증가시킬 것이며,이 문제를 해결할 수있는 간단한 방법이 있어야한다고 생각합니다. –