some source code about twisted

This commit is contained in:
JamesonHuang
2015-06-15 22:20:58 +08:00
parent 8791e644e5
commit dff86defdb
1113 changed files with 407155 additions and 0 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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