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
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) |