ネットワーク経由で JSON メッセージを取得するためにstomp.pyライブラリを使用しています。コールバックを使用してメッセージ処理を提供する、ここで提供する簡単な例を採用しました。
しかし、そのコールバックを変更したときに単純なエラーが発生しました。たとえば、JSON 文字列を解析しようとしたときに、json.loads() の代わりに json.load() を呼び出しました。
class MyListener(object):
def on_message(self, headers, message):
data = json.load(message) ## Should be .loads() for a string!
通常はそれで問題ありません。AttributeError になり、トレースバックが表示されます。ただし、この場合、Python は次のように出力します。
ロガー「stomp.py」のハンドラが見つかりませんでした
...トレースバックもクラッシュもありません。それだけです。デバッグして何が間違っていたのかを見つけるのは非常に混乱します! 少なくとも次の行に沿った通常のトレースバックを期待していました。
Traceback (most recent call last):
File "./ncl/stomp.py-3.1.3/stompJSONParser.py", line 32, in <module>
[etc etc ...]
...リスナー全体を退屈させるのではなく。それは別のスレッドで発生したためだと思いますか?
解決したので、これはコールバックの一種のランタイム エラーのようなもので、エラーが発生したときに何か間違ったことをしたことを少なくとも知っていますが、何らかの間違いをするのではなく、間違いを犯すたびにそのエラーを吐き出すだけの場合便利なメッセージですが、コーディングが少し難しくなります。
これは何が原因ですか?そして、通常のより詳細なトレースバックを取り戻すにはどうすればよいでしょうか?