Hevent has nothing of the kind. But you can use bool(g) , g.ready() and g.successful() to check its status. I would poll green status:
import gevent import random def _get_status(greenlets): total = 0 running = 0 completed = 0 successed = 0 yet_to_run = 0 failed = 0 for g in greenlets: total += 1 if bool(g): running += 1 else: if g.ready(): completed += 1 if g.successful(): successed += 1 else: failed += 1 else: yet_to_run += 1 assert yet_to_run == total - completed - running assert failed == completed - successed return dict(total=total, running=running, completed=completed, successed=successed, yet_to_run=yet_to_run, failed=failed) def get_greenlet_status(greenlets): while True: status = _get_status(greenlets) print status if status['total'] == status['completed']: return gevent.sleep(5) def crawl(url): r = random.randint(0, 10) gevent.sleep(r) err = random.randint(0, 4) if err == 0: raise Exception greenlets = [gevent.spawn(crawl, each) for each in xrange(100)] get_greenlet_status(greenlets)
source share