Как контролировать количество уведомлений, отправляемых по сигналу django - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть CRM и API на основе администратора django, которые обновляют мою таблицу Google. Это вызвано сигналами Джанго. Иногда мне нужно отправить запрос один раз с одним изменением строки в электронной таблице. Иногда мне нужно обновить несколько строк. Проблема в том, что сигналы django срабатывают каждый раз, когда изменение регистрируется в БД, но я могу обновить свою электронную таблицу одним запросом.

Например, мне нужно удалить 2 строки:

  • Изменение в БД зарегистрировано на 1 строку,
  • Запрос отправлен на электронную таблицу,
  • Изменение БД зарегистрировано на 2 строки,
  • Запрос отправлен на электронную таблицу.

Но мне нужно:

  • Изменение в БД, зарегистрированное для 1 строки,
  • Изменение в БД, зарегистрированное для 2 строки,
  • Запрос отправляется в электронную таблицу.

Все ненужные запросы накапливаются и занимают много времени.

Как зарегистрировать все изменения только один раз, чтобыотправить один запрос?

Дополнительный вопрос. У меня есть 2 модели: Project и ProjectImages. PI связан с P, поэтому, если я удаляю P, то перед его удалением для каждого связанного экземпляра PI я вижу срабатывание сигналов. Вся электронная таблица удалена, и в ней нет необходимости удалять строки, просто чтобы посмотреть, как удаляется пустая электронная таблица.

Как мне избежать сигналов PI и перейти прямо к сигналу P?

Кроме того,Может быть, я могу как-то реализовать асинхронные функции, многопоточность или Celery, чтобы пользователь не ждал? Я действительно не знаю, какой это правильный выбор, но хотел бы узнать ваше мнение, что было бы более подходящим.

...