[Twisted-Python] defer.inlineCallbacks dosn't work with cython,	deferredGenerator does.
    gelin yan 
    dynamicgl at gmail.com
       
    Mon Apr  9 06:05:41 EDT 2012
    
    
  
Hi All
   I just to let you know that defer.inlineCallbacks can't work with cython
well. an example:
def await():
   d = defer.Deferred()
   reactor.callLater(3, d.callback, True)
   return d
@defer.inlineCallbacks
def host():
   thing = yield await()
   ""do sth"""
will fail to work on cython due to cython would change the function
name(here I refer to host()) which lead to generator can't send back the
result to the original function.
However, deferredGenerator does work with cython
like:
@defer.deferredGenerator
def host():
    d = await()
    thing = defer.waitForDeferred(d)
    yield thing
  It is not a common case to write such codes with cython, in case of need,
deferredGenerator may help.
 I personally hope deferredGenerator will be always there even python 2.4
support has been abandoned. deferredGenerator itself is not so elegant as
inlineCallbacks, at least I don't need
to struggle with a series of callback functions..
Regards
gelin yan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20120409/cf1f658e/attachment.htm 
    
    
More information about the Twisted-Python
mailing list