14

デバッグの目的で、すべての greenlet を反復処理してトレース トレースを取得したいと考えています。gevent でどのようにすればよいですか?

基本的に、これに相当する gevent を実行したいと思います。

4

2 に答える 2

19

モジュールを使用しgcて、ヒープ上のすべてのオブジェクトを反復処理し、グリーンレットを検索できます。グリーンレットは、スタックトレースを属性として保存しますgr_frame

import gc
import traceback
from greenlet import greenlet

for ob in gc.get_objects():
    if not isinstance(ob, greenlet):
        continue
    if not ob:
        continue
    log.error(''.join(traceback.format_stack(ob.gr_frame)))
于 2012-09-23T16:09:35.807 に答える