デバッグの目的で、すべての greenlet を反復処理してトレース トレースを取得したいと考えています。gevent でどのようにすればよいですか?
基本的に、これに相当する gevent を実行したいと思います。
モジュールを使用し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)))