4

如何在 Django 1.0 中执行以下(Django 0.96)调度程序挂钩?

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) 

顺便说一句,这段代码来自谷歌关于在 GAE 上使用 Django 的文章。不幸的是,Django 中的调度代码在 0.96 和 1.0 之间被重写,Google 的示例不适用于 Django 1.0。

当然,Django 人员提供了有关如何准确执行此迁移的有用指南,但我目前还不够热衷于弄清楚。:o)

谢谢阅读。

布赖恩

4

1 回答 1

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)
于 2009-08-13T03:58:30.737 回答