2009-08-12 4 views
4

Comment effectuer les hooks suivants du distributeur (Django 0.96) dans Django 1.0?Migration de django.dispatch.dispatcher depuis Django 0.96 vers 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) 

Soit dit en passant, ce code est de Google's Article on Using Django on GAE. Malheureusement, le code de diffusion dans Django a été réécrit entre 0,96 et 1,0, et l'exemple de Google ne fonctionne pas avec Django 1.0.

Bien sûr, les gens de Django ont fourni un helpful guide sur la façon de faire exactement cette migration, mais je ne suis pas assez enthousiaste pour le comprendre pour le moment. : o)

Merci d'avoir lu.

Brian

Répondre

5

La différence fondamentale est que vous ne demandez au répartiteur de vous connecter à un certain signal, demandez le signal directement. Donc, il ressemblerait à quelque chose comme ceci:

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

Impressionnant - Merci. : o) –