У нас есть простая задача, работающая с django-celery на 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()
Где origin — это CSV-файл. Когда файл большой (более 50 000 строк), задача занимает всю память, выдавая ошибки R14, пока не будет отменена системой (при 150% доступной памяти 512 МБ). Память никогда не освобождается, и нам приходится перезапускать задачу вручную.
Работая на машине с Linux или с мастерами на машине для разработки, он завершается без проблем (все 170 000 строк). Кажется, утечка памяти ТОЛЬКО на Heroku. Кстати, мы запускаем с DEBUG=False.
Что-то не так с реализацией задач сельдерея в Heroku? Что-нибудь, что мы можем пропустить? Это стало препятствием при развертывании на Heroku.
Любая помощь будет высоко ценится.