계산 집약적 인 django 응용 프로그램을 개발 중입니다. Celery를 사용하여 작업 수행 시간을 단축하고 Redis를 브로커로 사용하고 캐시를 지원합니다.AWS의 Python 사전을 Redis 캐시에서 읽고 서버를 충돌 함
Redis 캐시는 셀러리 작업 전체에서 큰 사전 구조를 공유하는 데 사용됩니다.
자주 Redis 캐시 (1 초 후)에 파이썬 사전을 작성/업데이트하기위한 나머지 API가 있습니다. 각 api 호출은 새로운 작업을 시작합니다.
localhost에서 모두 잘 작동합니다. 그러나 Aws에서 탄성 빈 줄 응용 프로그램은 언젠가 실행될 때 충돌합니다.
사전 구조가 비어있을 때 충돌이 발생하지 않습니다. 다음은 캐시를 업데이트하는 코드입니다.
r = redis.StrictRedis(host=Constants.REDIS_CACHE_ADDRESS, port=6379, db=0)
mydict_obj = r.get("mydict")
if mydict_obj:
mydict = eval(str(mydict_obj))
else:
mydict = {}
for hash_instance in all_hashes:
if hash_instance[1] in mydict:
mydict[hash_instance[1]].append((str(hash_instance[0]), str(data.recordId)))
else:
mydict[hash_instance[1]] = [(str(hash_instance[0]), str(data.recordId))]
r.set("mydict", mydict)
해결 방법을 찾을 수 없으므로 왜 탄력있는 콩팥 모양의 응용 프로그램이 aws에서 충돌합니까? 그것은 localhost에서 잘 작동합니다.
elastic-beanstalk 앱에 대한 로그가 있습니까? 예라면 로그 내용을 게시 할 수 있습니까? –
서버가 다운되면 로그가 삭제됩니다. ... : \ –