Heroku에서 django-celery로 실행하는 간단한 작업이 있습니다. 같은 뭔가 : 기원 CSV 파일입니다Heroku 셀러리 백그라운드 작업
@task
Simple_task():
for line in csv.reader(origin):
process_line(line)
process_line(line):
fields = parse_line(line)
reg = Model1() # Django model
reg.field1 = fields[0]
reg.field2 = fields[1]
reg.field3 = fields[2]
reg.save()
. 파일 크기가 커지면 (50.000 줄 초과) 작업은 모든 메모리를 사용하여 시스템에서 취소 될 때까지 R14 오류를 제공합니다 (512MB의 사용 가능한 메모리의 150 %). 메모리는 절대로 해제되지 않으므로 수동으로 작업을 다시 시작해야합니다.
Linux 컴퓨터 또는 개발 컴퓨터의 포먼 (foremen)과 함께 실행하면 문제없이 완료됩니다 (모두 170.000 줄). 그것은 Heroku에서만 메모리를 누설하는 것 같습니다. 그런데 DEBUG = False로 실행합니다.
Heroku에서 샐러리 작업을 구현하면 문제가 발생합니까? 우리가 놓칠 수있는 건 없니? 이것은 Heroku에 배치에 쇼 스토퍼가되었습니다.
도움을 주시면 감사하겠습니다.
그냥 일반적인 디버깅 제안 : 제 생각 엔이 장고도 셀러리도 관련이 없다는 것입니다. 이것을 증명하기 위해 최소한의 Heroku 앱 (Django가없는 평범한 "main")을 만들어 실행합니다. 실패하면 우선 requirements.txt를보고 디버그 인쇄를 나중에 추가하십시오. 성공하면, 알아낼 때까지 나머지 것들을 점차적으로 추가하십시오. 행운을 빕니다! –
대용량의 메모리를 로컬로 사용하지 않고 그냥 눈치 채지 않았습니까? – JoshB