2012-03-01 9 views
2

djangoのシグナルには、 "黙って失敗する"というパラダイムがあるようです。djangoシグナル:黙って失敗しますか?間違いをデバッグする良い方法はありますか?

私は私の信号機能の小さなスペルミスを作り、例えば: - 私は私の引数の代わりに、「送信者」として「送信」を使用

def new_users_handler(send, user, response, details, **kwargs): 
    print "new_users_handler function executes" 
    user.is_new = True 
    if user.is_new: 
     if "id" in response: 
      from urllib2 import urlopen, HTTPError 
      from django.template.defaultfilters import slugify 
      from django.core.files.base import ContentFile 

      try: 
       url = None 
       if sender == FacebookBackend: 
        url = "http://graph.facebook.com/%s/picture?type=large" \ 
          % response["id"] 
       elif sender == google.GoogleOAuth2Backend and "picture" in response: 
        url = response["picture"] 
    ...... 
    socialauth_registered.connect(new_users_handler, sender=None) 

、私は本当に任意の有用なエラーを得ることはありません私のdevserver stdoutにメッセージやデバッグ情報があります。

シグナルの失敗/エラーメッセージが大きく鮮明に表示されるようにする良い方法はありますか?

name "sender" is not defined 

しかし、代わりに、すべてのエラーメッセージがありませんでしたし、私が探していたことを私に言って、適切なエラーメッセージが発生した場合は、上記の私の例で

、これは「5分」修正されている可能性がなぜ私の信号が呼び出されていないのか把握しようとしています...クールではありません。

アドバイス歓迎!

+0

https://docs.djangoproject.com/en/dev/howto/error-reporting/デバッグをTrueにしていますか? –

+0

はい。 'DEBUG = True' –

答えて

1

あなたが求めているものではありませんが、あなたの問題はpyflakesのような静的アナライザーでも解決できました。 PyPIから

Pyflakesは、Pythonプログラムを分析し、さまざまなエラーを検出するためのプログラムです。ソースファイルをインポートするのではなく、ソースファイルを解析するので、副作用のあるモジュールでも安全に使用できます。また、はるかに高速です。

サンプル出力:

tmp.py:9: 'ContentFile' imported but unused 
tmp.py:13: undefined name 'sender' 

私はそれが私のエディタに統合されている(vimの、しかし、私はまた、いくつかの他の人にそれを見てきました)私は、または保存に行くように私のタイプミスを強調し、。

+0

これは便利です。私もvimを使います。シンセティックプラグインを試しましたか?私はそれがかなり良いと聞き、pyflakesのようなやり方で行動します。私はこれらの糸くずのプラグインを試す時間を見つける必要があります... –

+0

-1解決策は手元の問題だけを見ています...何か他の例外がシグナルハンドラによって発生している場合はどうすれば...私はまだ私はDjangoで私のシグナルハンドラをデバッグする必要があります.. – Optimus

関連する問題