2013-12-19 1 views
0

먼저 셀러리를 사용하여 실행하는 모듈이 있습니다.셀러리에서 실행 명령

둘째, 저는 셀러리 작업자에게 작업을 보내기 위해 실행하는 다른 모듈을 가지고 있습니다. 첫 번째 모듈을 가져 와서 비동기라고 부릅니다.

이제 첫 번째 모듈은 한 번로드해야하는 대용량 파일을로드합니다. 셀러리가 시작될 때로드하고 싶습니다. 그러나 두 번째 모듈을 실행하여 셀러리에 작업을 보내면이 파일을 다시 가져 오지 않으려 고합니다.

셀러리와 함께 함수를 호출하여 작업자가 초기화 될 때 처음으로로드 한 다음 작업을 작업자에게 푸시하는 두 번째 모듈을 실행할 때이 함수를 다시 호출하지 않을 수 있습니까?

건배

답변

1

이 일어날 수 있도록하는 가장 간단한 방법은 셀러리 노동자 모듈을 통과보다는 그들 자신의 오른쪽에, 가져올 것입니다.

예를 들어,이

수입 big_module

작업 = 같은 [foo.s (big_module) foo.s (big_module) ...]

현재의 foo 안쪽 모듈을 가져 오기보다는 다른 객체와 마찬가지로 액세스하십시오.

1

각 작업자는 작업을 싱글 톤으로 인스턴스화하므로 원하는 모든 것을 작업 개체에 캐시 할 수 있습니다.

다른 작업간에 공유하려는 것 같습니다. 이 경우 자신의 싱글 톤을 만들 수 있습니다. 작업자 당 한 번로드됩니다. 여러 작업자가 공유하고 싶다면 캐시가 필요합니다 (memcache, redis, django db, 최적화 된 파일,?).