On Wed, Jun 24, 2009 at 4:00 PM, lasizoillo
2009/6/24 Yann Pomarede
: Thanks for your reply. I already thought about that but I'll have other problems if I do so: - I need some variables to be common between the instances (Maybe it's not so difficult with RPC or a DB or shared memory). If you need full ACI (ACID without durability) this can be a performance issue.
- I also need to keep a pool of all the outgoing the connections (to perform some real time stats and to limit the number of connection per user)
The load balancer can limit number of connections (without decipher ssl) or agregate real time stats from web servers (for easier management). You can upgrade code in your web app without lost service too ;-)
But if I do not have other choices, it's certainly what I'll have to do...
Threads are not the solution. Python have a GIL (Global Inter-Lock) [1] and don't use multicore facilities. I don't know if you can do multiprocessing with twisted. A load balancer sound more easy (and maybe more horizontal scalable).
[1] http://www.dabeaz.com/python/GIL.pdf
Excuse my poor english.
A little bit of knowledge... Threads are indeed a possibility, because OpenSSL would be the thing doing the SSL work, and given that you use OpenSSL via a C extension, the C extension can release the GIL. -- Christopher Armstrong http://radix.twistedmatrix.com/ http://planet-if.com/ http://canonical.com/