[Twisted-Python] defer.inlineCallbacks dosn't work with cython, deferredGenerator does.
dynamicgl at gmail.com
Tue Apr 10 01:33:49 EDT 2012
On Tue, Apr 10, 2012 at 12:50 PM, Andrew Bennetts <andrew at bemusement.org>wrote:
> On Tue, Apr 10, 2012 at 12:41:17PM +0800, gelin yan wrote:
> > When trying to run inlineCallbacks with Cython, a TypeError would
> > out like:
> > TypeError: inlineCallbacks requires <built-in function test> to produce a
> > generator; instead got <cy3.__pyx_scope_struct__test object at
> > test is the function where inlineCallbacks uses.
> > It looks like cython changes the name test to
> > internally so generator can't work properly.
> inlineCallbacks doesn't care what the function name is. The problem here
> that inlineCallbacks expects to be passed a generator function, and
> it is being passed some other sort of object. The ugly cy3.__blah name is
> a red
>  Without the check that produces this error, a common and very confusing
> error is to decorate a non-generator function (i.e. one with no yield
> statement) with @inlineCallbacks, which would appear to work but would
> mysteriously fail to do anything useful when executed.
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
Thanks for replying. the yield was actually there: test function is:
d = defer.Deferred()
reactor.callLater(seconds, d.callback, True)
thing = yield await(2)
Do you have any idea how to work around? Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Twisted-Python