mirror of
https://github.com/JamesonHuang/OpenWrt_Luci_Lua.git
synced 2025-06-21 10:30:38 +00:00
some source code about twisted
This commit is contained in:
@ -0,0 +1,12 @@
|
||||
|
||||
def my_generator():
|
||||
print 'starting up'
|
||||
yield 1
|
||||
print "workin'"
|
||||
yield 2
|
||||
print "still workin'"
|
||||
yield 3
|
||||
print 'done'
|
||||
|
||||
for n in my_generator():
|
||||
print n
|
@ -0,0 +1,19 @@
|
||||
|
||||
def my_generator():
|
||||
print 'starting up'
|
||||
yield 1
|
||||
print "workin'"
|
||||
yield 2
|
||||
print "still workin'"
|
||||
yield 3
|
||||
print 'done'
|
||||
|
||||
gen = my_generator()
|
||||
|
||||
while True:
|
||||
try:
|
||||
n = gen.next()
|
||||
except StopIteration:
|
||||
break
|
||||
else:
|
||||
print n
|
@ -0,0 +1,22 @@
|
||||
|
||||
def my_generator():
|
||||
yield 1
|
||||
yield 2
|
||||
yield 3
|
||||
|
||||
def my_other_generator():
|
||||
yield 10
|
||||
yield 20
|
||||
yield 30
|
||||
yield 40
|
||||
|
||||
gens = [my_generator(), my_other_generator()]
|
||||
|
||||
while gens:
|
||||
for g in gens[:]:
|
||||
try:
|
||||
n = g.next()
|
||||
except StopIteration:
|
||||
gens.remove(g)
|
||||
else:
|
||||
print n
|
@ -0,0 +1,33 @@
|
||||
|
||||
class Malfunction(Exception):
|
||||
pass
|
||||
|
||||
def my_generator():
|
||||
print 'starting up'
|
||||
|
||||
val = yield 1
|
||||
print 'got:', val
|
||||
|
||||
val = yield 2
|
||||
print 'got:', val
|
||||
|
||||
try:
|
||||
yield 3
|
||||
except Malfunction:
|
||||
print 'malfunction!'
|
||||
|
||||
yield 4
|
||||
|
||||
print 'done'
|
||||
|
||||
gen = my_generator()
|
||||
|
||||
print gen.next() # start the generator
|
||||
print gen.send(10) # send the value 10
|
||||
print gen.send(20) # send the value 20
|
||||
print gen.throw(Malfunction()) # raise an exception inside the generator
|
||||
|
||||
try:
|
||||
gen.next()
|
||||
except StopIteration:
|
||||
pass
|
@ -0,0 +1,32 @@
|
||||
|
||||
from twisted.internet.defer import inlineCallbacks, Deferred
|
||||
|
||||
@inlineCallbacks
|
||||
def my_callbacks():
|
||||
from twisted.internet import reactor
|
||||
|
||||
print 'first callback'
|
||||
result = yield 1 # yielded values that aren't deferred come right back
|
||||
|
||||
print 'second callback got', result
|
||||
d = Deferred()
|
||||
reactor.callLater(5, d.callback, 2)
|
||||
result = yield d # yielded deferreds will pause the generator
|
||||
|
||||
print 'third callback got', result # the result of the deferred
|
||||
|
||||
d = Deferred()
|
||||
reactor.callLater(5, d.errback, Exception(3))
|
||||
|
||||
try:
|
||||
yield d
|
||||
except Exception, e:
|
||||
result = e
|
||||
|
||||
print 'fourth callback got', repr(result) # the exception from the deferred
|
||||
|
||||
reactor.stop()
|
||||
|
||||
from twisted.internet import reactor
|
||||
reactor.callWhenRunning(my_callbacks)
|
||||
reactor.run()
|
@ -0,0 +1,66 @@
|
||||
|
||||
from twisted.internet.defer import inlineCallbacks, Deferred, returnValue
|
||||
|
||||
@inlineCallbacks
|
||||
def my_callbacks_1():
|
||||
from twisted.internet import reactor
|
||||
|
||||
print 'my_callbacks_1 first callback'
|
||||
d = Deferred()
|
||||
reactor.callLater(2, d.callback, None)
|
||||
yield d
|
||||
|
||||
print 'my_callbacks_1 second callback'
|
||||
d = Deferred()
|
||||
reactor.callLater(2, d.callback, None)
|
||||
yield d
|
||||
|
||||
print 'my_callbacks_1 third callback'
|
||||
returnValue(1)
|
||||
|
||||
@inlineCallbacks
|
||||
def my_callbacks_err():
|
||||
from twisted.internet import reactor
|
||||
|
||||
print 'my_callbacks_err first callback'
|
||||
d = Deferred()
|
||||
reactor.callLater(3, d.callback, None)
|
||||
yield d
|
||||
|
||||
print 'my_callbacks_err second callback'
|
||||
d = Deferred()
|
||||
reactor.callLater(3, d.callback, None)
|
||||
yield d
|
||||
|
||||
print 'my_callbacks_err third callback'
|
||||
raise Exception('uh oh')
|
||||
|
||||
def got_result(res):
|
||||
print 'got result:', res
|
||||
|
||||
def got_error(err):
|
||||
print 'got error:', err
|
||||
|
||||
def run_callbacks():
|
||||
d1 = my_callbacks_1()
|
||||
d1.addCallbacks(got_result, got_error)
|
||||
|
||||
d2 = my_callbacks_err()
|
||||
d2.addCallbacks(got_result, got_error)
|
||||
|
||||
from twisted.internet import reactor
|
||||
|
||||
def callbacks_finished(_):
|
||||
callbacks_finished.count += 1
|
||||
if callbacks_finished.count == 2:
|
||||
print 'all done'
|
||||
reactor.stop()
|
||||
callbacks_finished.count = 0
|
||||
|
||||
d1.addBoth(callbacks_finished)
|
||||
d2.addBoth(callbacks_finished)
|
||||
|
||||
|
||||
from twisted.internet import reactor
|
||||
reactor.callWhenRunning(run_callbacks)
|
||||
reactor.run()
|
@ -0,0 +1,15 @@
|
||||
|
||||
import traceback
|
||||
|
||||
from twisted.internet.defer import inlineCallbacks
|
||||
|
||||
@inlineCallbacks
|
||||
def my_callbacks():
|
||||
yield 1
|
||||
traceback.print_stack()
|
||||
from twisted.internet import reactor
|
||||
reactor.stop()
|
||||
|
||||
from twisted.internet import reactor
|
||||
reactor.callWhenRunning(my_callbacks)
|
||||
reactor.run()
|
Reference in New Issue
Block a user