У меня есть приложение для управления файлами, и я хочу, чтобы некоторые конкретные пользователи-администраторы получали уведомление, когда "baseusers" создают каталоги. Письма отправляются пользователям, указанным на страницах администратора. Оптимальным решением было бы установить флажок на страницах моего профиля для получения уведомлений, но я бы хотел, чтобы это сначала сработало. Вот мое простое решение:
from django.core.mail import send_mail, BadHeaderError
from basedraft.sendmail.views import send_email
from django.core.signals import request_finished
@permission_required('fileman.can_fm_add')
def createDir(request, path=None):
if path is None:
return HttpResponse(_(u"Path does not set."))
try:
path = toString(path)
os.mkdir(path)
except Exception, msg:
return raise_error(request, [str(msg)])
createHistory(request.user, "createdir", toString(path)) # Added this to history, added createdir to models
# Send mail to recipients when a directory is created
send_email(toString(path))
return HttpResponseRedirect('/fm/list/%s' % path)
Проблема здесь в том, что сайт зависает, пока не будет отправлено письмо. Я пытался использовать сигналы так:
from django.core.mail import send_mail, BadHeaderError
from basedraft.sendmail.views import send_email
from django.core.signals import request_finished
@permission_required('fileman.can_fm_add')
def createDir(request, path=None):
if path is None:
return HttpResponse(_(u"Path does not set."))
try:
path = toString(path)
os.mkdir(path)
except Exception, msg:
return raise_error(request, [str(msg)])
createHistory(request.user, "createdir", toString(path)) # Added this to history, added createdir to models
# Send mail to recipients when a directory is created
#send_email(toString(path))
request_finished.connect(mail_callback)
return HttpResponseRedirect('/fm/list/%s' % path)
def mail_callback(sender, **kwargs):
#path = setPath
send_email('test')
Но это только начало отправлять много писем для каждого законченного запроса. Любые идеи, как мне это сделать, если есть способ, чтобы сайт не зависал, но отправка электронной почты осуществляется в фоновом режиме?