Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 13, 2009 15:51:47

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

django+AOP

вообщем использую django и AOP библиотеку http://www.cs.tut.fi/~ask/aspects/doc.shtml

Делаю пеерхват отправки емайлов:

mail_aspects.py: - этот файл лежит в корне моего джанго проекта

import aspects
from django.core.mail import send_mail

def on_send_mail(*args, **kwargs):
retval = yield aspects.proceed
... do something
yield aspects.return_stop(retval)

def init():
aspects.with_wrap(on_send_mail, send_mail )

init()
далее в самом начале файла settings.py
подключаю импорт для привязки AOP
import mail_aspects

Но сталкиваюсь с такой проблемой что для некоторых вызовов send_mai происходит несколько вызовов моего метода on_send_mail, мне кажется это из-за того что я в неверном месте (settings.py ) делаю импорт для привязки aop и из-за этого происходит привязка несколько раз.. В итоге мне пришлось перенести импорт из settings.py в каждый файл в котором производится вызов функции send_mail и повторные вызовы вроде как пропали, но не нравится что приходится делать это для каждого файла в котором идет вызов - хотелось бы делать привязку в одном месте.

Подскажите где правильно делать такую привязку (import mail_aspects) и почему если делать внутри settings.py то могут быть возовы по несколько раз?



Отредактировано (Авг. 13, 2009 15:56:23)

Офлайн

#2 Авг. 13, 2009 15:58:40

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

django+AOP

я обычно в __init__.py пихаю

зачем тебе АОП в джанге?)

Офлайн

#3 Авг. 13, 2009 16:52:10

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

django+AOP

ну как зачем отловить все вызовы send_mail в одном месте например) есть альтернатива?)

slav0nic
я обычно в __init__.py пихаю
что то у меня эффект такой же как от в settings поместить, те повторные вызовы идут.



Офлайн

#4 Авг. 14, 2009 00:29:52

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

django+AOP

ну сеттинг не один раз читается, пытайся проверить зарегистрировано ли уже событие или нет
wrap_is_enabled чтоли /me не знаток AOP

по поводу альтернатив:
как человек мало интересующийся “философией AOP” :], я б наверно заманкипатчил send_mail и добавил бы свой сигнал http://docs.djangoproject.com/en/dev/topics/signals/#defining-and-sending-signals
например после этой строки http://code.djangoproject.com/browser/django/trunk/django/core/mail.py#L173 , правда это б реагировало и на всякие mail_admins и тп

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version