к сожалению спикер не пишит, он кричит. а вообще кричит вам собственно материнская плата, к оторой он подцеплен. и для того чтобы понять от чего ей совсем плохо, надо знать что за материнская плата у вас подцеплена к этому спикеру
может лучше сделать универсальный класс и порождать его Engine(type='petrol')
в зависимости от self.type уже требовать ввод каких либо параметров, как то расход топлива на 100 или потребление эл-ва в час
мультипоточность и только она одна спасет
разбиваем входящий файл на чунки по 2000 записей, к примеру
в каждом блоке прибиваем не нужные строки
записываем каждый чунк в новый файл
проблемы будут с записью в файл. поэтому надо использовать этот рецепт
дорогу осилит идущий :)
одна задача в celery бежит по всем записям и если необходимо создает много маленьких задач в том же celery
тоесть Ваша задача просто превращается в задачу-диспетчер, а вся логика для конкретной записи укладывается в этой маленькой задаче. желательно эти маленьки задача выделить в отдельный воркер, с большим значением concurensy