1👍
If your running in a multi-threaded environment, it’s merely a matter of extending Queue.Queue
to create an instance that can fetch and instantiate connections on demand, from multiple threads in which your views are handling the request-response flow. You’ll probably want to have a certain cap on how many connections your retaining by limiting the maximum size of the queue, although you can instantiate more connections beyond that and simply discard them if you can put them back into the queue.
The downside of using Queue.Queue
is that it can create cross-cutting concerns if your views are responsible for retrieving connections from and returning them back into the queue. You can get a healthier design if you only queue the actual object from pyes.ES
that holds the connection and create a wrapper for ES
that, when performing a query, creates a new ES
instance, fetches a connection from the queue, sets it on the instance, performs the query, returns the connection back into the queue, discards the ES
instance and returns the query results.