Concurency сельдерей Django оптом создать или обновить - PullRequest
0 голосов
/ 08 октября 2019

У меня проблема с конкуренцией с 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)

Проблема заключается в том, что если задача выполняется асинхронно, еслизадачи выполняются одновременно, первая задача создает список пользователей, затем вторая задача также извлекает список пользователей, первая создает или обновляет пользователей, но вторая задача в списке больше не имеет нужной информации для обновления или создания. ,Решение, которое я думал, состояло в том, чтобы поместить задачи в синхронный список, а не асинхронно, возможно ли это? Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...