У меня есть приложение Django 1.11. Есть модель Campaign, где я могу указать параметры для выбора Users. Когда я запускаю Campaign, я создаю экземпляр CampaignRun с FK compaign_id
и M2M users
. Каждый раз, когда запускается кампания, в результирующем наборе запросов могут находиться разные пользователи, поэтому я хотел бы сохранить запись об этом. Я делаю это так, как показано ниже:
run = CampaignRun.objects.create(campaign=self, ...)
(...)
filtered_users = User.objects.filter(email__in=used_emails)
run.users.add(*filtered_users) # I also tried run.users.set(filtered_users)
run.save()
Однако оказывается, что если кампания запускается с django -admin, а итоговое число пользователей превышает приблизительно 150, процесс занимает более 30 секунд. , что приводит к ошибке 502: Bad Gateway.
Мне кажется, что число 150 смехотворно мало для получения тайм-аута, поэтому я считаю, что должно быть достаточно места для оптимизации процесса. Что я могу сделать, чтобы улучшить этот процесс? Какие у меня варианты в Django? Вы бы предложили использовать совершенно другой подход (например, нет sql)?