Вопрос оптимизации выходит за рамки советов на хабре и в каждом случае это довольно долгий и дорогостоящий процесс на который влияет множество факторов.
Иными словами "серебряной пули" тут нет и быть не может. Начните с анализа raw sql query, которые уходят в базу данных.
По своему опыту могу сказать что в 90% подобных задач слабым местом являются выделяемые ресурсы под базу данных и/или ее кривые настройки.
В данном случае принцип будет таким.
1) Вы нажимаете на кнопку.
2) Celery запускает задачу в фоновом режиме.
3) По ее окончанию вы получаете уведомление на почту, либо же отчет пишется в лог.
Если вам нужен callback в ui (к примеру всплывающий алерт о том что все готово), то для решения задачи можно использовать Centrifugo (https://github.com/centrifugal/centrifugo)
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
В powershell указанные команды работать не будут.