Я новичок в python и пытаюсь удалить / обрезать вывод стека трассировки Gevent при возникновении исключения.Я где-то читал, что я могу сделать это, используя AsyncResult, однако мне кажется, что я не могу понять, как это использовать.
Вот пример, с которого я начал и итерировал, чтобы сделать его похожим нав реальном коде я устраняю неполадки, но я застрял на последнем этапе, когда попытался добавить my_decor в work ().Любая помощь в исправлении этого очень ценится.
from gevent.event import AsyncResult
import gevent
from functools import wraps
def my_decor(k, *args, **kwargs):
@wraps(k)
def wrapper(*args, **kwargs):
r = AsyncResult()
try:
value = k()
except Exception as e:
r.set_exception(e)
else:
r.set(value)
return r.exception or r.value
result = gevent.spawn(wrapper, k)
return result
def f():
def foo():
if True:
raise Exception('tttttttt')
return foo
def p():
def bar():
if True:
raise Exception('ppppppppppppp')
return bar
@my_decor
def work():
foo1 = gevent.spawn(f())
bar1 = gevent.spawn(p())
gevent.joinall([foo1, bar1])
return foo1.get() or bar1.get()