def wrapper(o_fn):
if timeout:
f = functools.partial(gevent.with_timeout, timeout, o_fn, timeout_value=sync_ret_val)
else:
f = o_fn
@functools.wraps(o_fn)
def wrapped(*args, **kwargs):
g = gevent.Greenlet(f, *args, **kwargs)
g.link_exception(self._on_error)
g.link(lambda v: self._running_greenlets.discard(g))
self._running_greenlets.add(g)
g.start()
return sync_ret_val
return wrapped
评论列表
文章目录