caring-goat-913
caring-goat-913

Reputation: 4049

Tornado multi-process mode: how can I send users to the same process?

I have a stateful concept Tornado application which enables users (a small user base) to do some CPU bound tasks with potentially large in-memory objects. This poses a problem in a single-threaded configuration, because one user can impact the experience of another.

I could use multiprocessing to ship the task to another process, but this would require repeated copying of this large data and would not be ideal.

I found that Tornado can be configured to be multi-process. I thought this would resolve my issue for the time being; different users get different processes. However what I've found is that references to objects would go missing when interacting with the web application. I assume it's because Tornado sends me to a potentially different process per API invocation, and the object I interacted previously with did not exist in the current process.

Thus my question: Can I configure Tornado to a client/user to the same process repeatedly?

Upvotes: 0

Views: 323

Answers (1)

Ben Darnell
Ben Darnell

Reputation: 22154

You can't do this with Tornado's multi-process mode, or any solution that involves multiple processes all listening on a single port. Instead, you need to run your Tornado processes independently on different ports, and use a separate load balancer that can distribute requests to them intelligently (for example, nginx with the ip_hash option)

Upvotes: 2

Related Questions