Некорректная обработка задачи сельдерея в цикле
У меня есть цикл, который вызывает задачу 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
только для одного элемента - все работает правильно.
Спасибо за любую помощь.