2009-08-12 44 views
4

如何在Django 1.0中执行以下(Django 0.96)调度程序钩子?将django.dispatch.dispatcher从Django 0.96迁移到1.0.2

import django.dispatch.dispatcher 

def log_exception(*args, **kwds): 
    logging.exception('Exception in request:') 

# Log errors. 
django.dispatch.dispatcher.connect(
    log_exception, django.core.signals.got_request_exception) 

# Unregister the rollback event handler. 
django.dispatch.dispatcher.disconnect(
    django.db._rollback_on_exception, 
    django.core.signals.got_request_exception) 

顺便说一句,这段代码是从Google's Article on Using Django on GAE。不幸的是,Django中的调度代码被重写为0.96和1.0之间,而Google的例子并不适用于Django 1.0。

当然,Django人员提供了一个helpful guide关于如何完成此迁移,但我现在还不够敏锐。 :o)

感谢您的阅读。

布赖恩

回答

5

的基本区别在于,你不再问调度员您连接到一些信号,你直接问信号。所以它看起来像这样:

from django.core.signals import got_request_exception 
from django.db import _rollback_on_exception 

def log_exception(*args, **kwds): 
    logging.exception('Exception in request:') 

# Log errors. 
got_request_exception.connect(log_exception) 

# Unregister the rollback event handler. 
_rollback_on_exception.disconnect(got_request_exception) 
+1

太棒了 - 谢谢。 :O) – 2009-08-13 15:29:34