Некорректная обработка задачи сельдерея в цикле

У меня есть цикл, который вызывает задачу celery для каждого элемента.

for item in my_list:
    my_task.delay(item)

В этом задании происходит длительная обработка элемента, а затем информация сохраняется в базе данных.

@shared_task
def my_task(item):
    with transaction.atomic():
        for el in Model_A.objects.filter(some_id=item):
            if el.some_field:
                # this part is long
                data_dict = get_data(el)
                break
        for k, v in data_dict.items():
            Model_B.objects.update_or_create(some_id=item, field1=k, field2=v)

Проблема в том, что data_dict = get_data(el) иногда возвращает неверные данные. Но если я запускаю my_task только для одного элемента - все работает правильно. Спасибо за любую помощь.

Вернуться на верх