[Twisted-Python] blocking code alongside with Twisted

Glyph glyph at twistedmatrix.com
Sat Sep 1 01:53:11 EDT 2012


On Aug 31, 2012, at 10:30 PM, Shuai Lin <linshuai2012 at gmail.com> wrote:

> Hi all,
> 
>     My server mainly consists of two modules: 
>     -- http api handling (using twisted)
>     -- backend blocking tasks
> 
>     The backend tasks have to block, because I have to call some third-party API, which is always blocking. What's more, since the third-party api call is blocking, I plan to use a thread pool to implement a connection pool.
> 
>     My question is: Is it ok to use twisted in this manner?  i.e. I just run `reactor.run()' in the main thread (to handle the http api request), and the rest of the program is  blocking -- and intrinsically not related to twisted.
> 
>     Any suggestion is appreciated. Thanks!

Sure, this is fine.  This is why the reactor has callInThread() after all :).  It may also make sense to use something like Ampoule <https://launchpad.net/ampoule> if the backend tasks are CPU intensive as well, and you want multi-core parallelism.

-glyph


More information about the Twisted-Python mailing list