[Twisted-Python] when to use callInThread?

Marco Giusti marco.giusti at gmail.com
Sat May 7 05:57:05 EDT 2011


On Sat, May 07, 2011 at 04:49:22PM +0800, Dfgqq Dfgqq wrote:
> Hi all
> 
>    I have a function like:
> 
> def longQuery(xxx)
> 
> this function will be invoked simultaneously (it means multiple thread
> environment) and this function may take a while to complete.
> 
> so my question is whether i should use reactor.callInThread to take benefit
> from non blocking

briefly you should use `callInThread` in two cases: when your code does
some long computation and when you use some libraries that do network
communication in a blocking manner.

> or use deferred object ?
> 
> It seems that deferred object doens't use threads.

http://twistedmatrix.com/documents/current/core/howto/gendefer.html#auto2

If `longQuery` is a DB query you should look at
twisted.enterprise.adbapi

http://twistedmatrix.com/documents/current/core/howto/rdbms.html

m.

-- 
La vera terra dei barbari non è quella che non ha mai conosciuto
l'arte, ma quella che, disseminata di capolavori, non sa nè
apprezzarli nè conservarli.
		-- Marcel Proust



More information about the Twisted-Python mailing list