джоба запускает другие джобы chain (collect, process, finalize) в цепочке
но collect джоба или handle могут выполняться очень долго из-за большого количества данных. как лучше работать с такими джобами и обрабатывать их?
к примеру джоба collect собирает данные чанками и записывает в отдельныу таблицу нужные записи, но таких записей может быть очень много и джоба может упасть по таймауту или ещё какая проблема, установить timeout в 0 и увеличить количество попыток будет хорошей практикой?
распарралелить и обернуть в супервизор чтоб точно не упало
распараллелить не вижу возможным, так как данные собираются по условию и мне придётся в джобе проверять, а было ли уже это записано или нет, вы так имеете ввиду?
@nzulfigarov что думаешь?
можно отслеживать добавление наверно, но тут надо больше в контекст проблемы лезть и смотреть в чем дело
необходимо собрать данные больше указанной даты, как это распараллелить ?
Если в итоге в job передаётся один большой массив, то лучше в момент сбора данных передавать частями, по крайней мере у меня job так лучше отрабатывает. А при обработке одного большого массива 40к элементов, job отваливается по таймауту, а при его увеличении просто зависает, не обрабатывается полностью.
Я думаю это мина замедленного действия , а если данные растут и скоро будет не 40к а 100k или больше, надо код писать сразу готовым к этому, если знаешь что данные растут
Обсуждают сегодня