셀러리 작업자를 사용하여 컴퓨터 학습 모델의 결과를 얻고 있습니다. 큰 덩어리의 데이터를 셀러리에 전달하는 방법
내가하고있는 일은 클라이언트에서 셀러 리 작업으로 큰 numpy 배열 (몇 메가 바이트)을 보내는 것입니다.
현재 클라이언트 numpy 배열을 base64로 직렬화하고 있습니다. 내가 저장/클라이언트 또는 셀러리 작업자의 Redis에서 직접 데이터를 가져올 때 시스템의 성능은/셀러리가 모든 인수 (numpy의 base64)를 넘길 때보 다 훨씬 빠릅니다.
args/numpy 배열을 전달하고 클라이언트에서 직접 redis가 아닌 셀러리 ('redis'브로커와 함께)를 사용하고 싶습니다. 문제가 될 수있는 곳을 알고 있습니까? 이 작업을보다 효과적으로 수행하기 위해 셀러리 구성을 어떻게 설정할 수 있습니까? (클라이언트 -> 브로커 -> 작업자와 클라이언트간에 데이터 전달) 대
serialized = np.asarray(images).reshape((number_of_records, size)).ravel().tostring()
serialized = base64.b64encode(serialized)
#self.redis.set(key, serialized)
print('calling celery processor')
result = self.celery.send_task('process', args=[number_of_records, serialized], kwargs={})
returncode, result = result.get(timeout=1000, interval=0.1)
(이 직접, 빠르게 레디 스 스토리지의 사용입니다) : 직렬화, 구성 설정에 대한 셀러리의 성능을
serialized = np.asarray(images).reshape((number_of_records, size)).ravel().tostring()
serialized = base64.b64encode(serialized)
self.redis.set(key, serialized)
print('calling celery processor')
result = self.celery.send_task('process', args=[number_of_records, key], kwargs={})
returncode, result = result.get(timeout=1000, interval=0.1)
resultc= self.redis.get(key)
모든 팁, ...? 나는이 시스템을 빠르고 간단하게 만들고 싶다. 두 번째 예제에서와 같이 실제로 redis를 직접 사용해야합니까?
는이 문제를 해결 했습니까? – luanbuingoc