Skip to content

Instantly share code, notes, and snippets.

@allenyang79
Created April 11, 2018 02:59
Show Gist options
  • Save allenyang79/c26c0b34dc1e0a9bc7bb9acaba9b6f80 to your computer and use it in GitHub Desktop.
Save allenyang79/c26c0b34dc1e0a9bc7bb9acaba9b6f80 to your computer and use it in GitHub Desktop.

gevent spawn出來的task,可以用以下三個decorate來綁定, task做完後的callback

glet = gevent.spawn(task, ...)


@glet.link
def on_finish(glet):
  pass
  
  
@glet.link_value
def on_success(glet):
  pass
  
  
@glet.link_exception
def on_exception(glet):
  pass
  
import gevent
import random
def task(name):
for i in range(0, 5):
gevent.sleep(0.1)
print("%s is sleepping ... %s" % (name, i))
if random.randint(0, 10) >= 11:
print(10/0)
print("done")
return True, "success"
glet = gevent.spawn(task, name="Bill")
@glet.link
def on_finish(glet, *args, **kw):
print("on_finish, %s, %s, %s" % (glet, args, kw))
@glet.link_value
def on_success(glet, *args, **kw):
print("on_success, %s, %s, %s" % (glet, args, kw))
print(dir(glet))
print(glet.value) # result
@glet.link_exception
def on_exception(glet, *args, **kw):
print("on_exception, %s, %s, %s" % (glet, args, kw))
print(glet.exception) # exception
gevent.sleep(2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment