Вы можете попробовать отредактировать код так, чтобы части, которые обрабатывают электронную почту, не были бы так встроены в модель django, так что и модель django, и это вторичное приложение взаимодействуют со стандартом python class / module / object / et c, вместо того, чтобы пытаться привить часть django, которая вам нужна в другом месте.
В качестве альтернативы вы можете попробовать использовать что-то вроде threading.Lock если ваше приложение фактически использует потоки внутри одного интерпретатора, чтобы предотвратить отправку нескольких сообщений. Существует также multiprocessing.Lock , который может работать, если потоковый не работает.
Другой вариант - сделать так, чтобы каждое запрошенное изменение имело уникальное значение, желательно что-то исходя из содержания самих изменений. IE, если у вас есть что-то вроде:
def check_send_email(email_addr, website_url, text_that_changed):
database.query('INSERT INTO website_updates VALUES %s, %s', (website_url, text_that_changed,))
if (database.check_result()): # update was not already present in database
send_email(email_addr)
check_send_email('email@example.com', 'website.com', '<div id="watched-div">')
, очевидно, вам нужно взаимодействовать с некоторыми более конкретными инструментами, но общая идея выше заключается в том, что при поступлении запросов вы не отправляете несколько писем напрасно. Конечно, найти значение, которое вы всегда можете сгенерировать точно такое же, при заданном c изменении, но оно также будет уникальным каждый раз, что может оказаться затруднительным.