У меня проблема с конкуренцией с django, у меня есть задача сельдерея, которая обновляет количество пользователей в таблице. Поскольку нужно обновить много строк, я использую массовое обновление, а чтобы избежать создания ненужных строк, я использую массовое создание.
all_statistic_user = StatisticsCountriesUser.objects.filter(user__in=all_branch_user,countries=user.country)
if all_statistic_user:
all_statistic_user.update(total_users=F('total_users') +1)
all_statistic_user = StatisticsCountriesUser.objects.exclude(user__in=all_branch_user,countries=user.country)
if all_statistic_user:
all_statistic_user = [StatisticsCountriesUser(user_id=user.id,countries=user.country) for user in all_statistic_user ]
StatisticsCountriesUser.objects.bulk_create(all_statistic_user)
else:
all_statistic_user = [StatisticsCountriesUser(user_id=user.id, countries=user.country) for user in all_branch_user]
StatisticsCountriesUser.objects.bulk_create(all_statistic_user)
Проблема заключается в том, что если задача выполняется асинхронно, еслизадачи выполняются одновременно, первая задача создает список пользователей, затем вторая задача также извлекает список пользователей, первая создает или обновляет пользователей, но вторая задача в списке больше не имеет нужной информации для обновления или создания. ,Решение, которое я думал, состояло в том, чтобы поместить задачи в синхронный список, а не асинхронно, возможно ли это? Заранее спасибо