cheroot.workers.threadpool module

A thread-based worker pool.

class cheroot.workers.threadpool.ThreadPool(server, min=10, max=- 1, accepted_queue_size=- 1, accepted_queue_timeout=10)

Bases: object

A Request Queue for an HTTPServer which pools threads.

ThreadPool objects must provide min, get(), put(obj), start() and stop(timeout) attributes.

_clear_dead_threads()
_clear_threads()

Clear self._threads and yield all joinable threads.

static _force_close(param, *args, **kwargs)
_spawn_worker()
grow(amount)

Spawn new worker threads (not above self.max).

property idle

Number of worker threads which are idle. Read-only.

put(obj)

Put request into queue.

Args:
obj (HTTPConnection): HTTP connection

waiting to be processed

property qsize

Return the queue size.

shrink(amount)

Kill off worker threads (not below self.min).

start()

Start the pool of threads.

stop(timeout=5)

Terminate all worker threads.

Args:

timeout (int): time to wait for threads to stop gracefully

class cheroot.workers.threadpool.WorkerThread(server)

Bases: threading.Thread

Thread which continuously polls a Queue for Connection objects.

Due to the timing issues of polling a Queue, a WorkerThread does not check its own ‘ready’ flag after it has started. To stop the thread, it is necessary to stick a _SHUTDOWNREQUEST object onto the Queue (one for each running WorkerThread).

conn = None

The current connection pulled off the Queue, or None.

ready = False

A simple flag for the calling server to know when this thread has begun polling the Queue.

run()

Process incoming HTTP connections.

Retrieves incoming connections from thread pool.

server = None

The HTTP Server which spawned this thread, and which owns the Queue and is placing active connections into it.