/ / No gevent, como posso despejar vestígios de pilha de todos os greenlets em execução? - python, gevent

No gevent, como posso descarregar rastreamentos de pilha de todos os greenlets em execução? - python, gevent

Para fins de depuração, eu gostaria de percorrer todos os greenlets e obter seus rastreamentos - como posso fazer isso com o gevent?

Basicamente, gostaria de fazer o equivalente a gevent de esta.

Respostas:

17 para resposta № 1

Você pode usar o gc para iterar todos os objetos na pilha e procurar greenlets. Os greenlets armazenam os rastreamentos da pilha como um atributo 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)))