|
@@ -210,10 +210,16 @@ class State(object):
|
|
|
task_count = 0
|
|
|
|
|
|
def __init__(self, callback=None,
|
|
|
+ workers=None, tasks=None, taskheap=None,
|
|
|
max_workers_in_memory=5000, max_tasks_in_memory=10000):
|
|
|
- self.workers = LRUCache(limit=max_workers_in_memory)
|
|
|
- self.tasks = LRUCache(limit=max_tasks_in_memory)
|
|
|
self.event_callback = callback
|
|
|
+ self.workers = (LRUCache(max_workers_in_memory)
|
|
|
+ if workers is None else workers)
|
|
|
+ self.tasks = (LRUCache(max_tasks_in_memory)
|
|
|
+ if tasks is None else tasks)
|
|
|
+ self._taskheap = None # reserved for __reduce__ in 3.1
|
|
|
+ self.max_workers_in_memory = max_workers_in_memory
|
|
|
+ self.max_tasks_in_memory = max_tasks_in_memory
|
|
|
self._mutex = threading.Lock()
|
|
|
self.handlers = {'task': self.task_event,
|
|
|
'worker': self.worker_event}
|
|
@@ -362,14 +368,10 @@ class State(object):
|
|
|
return '<ClusterState: events=%s tasks=%s>' % (self.event_count,
|
|
|
self.task_count)
|
|
|
|
|
|
- def __getstate__(self):
|
|
|
- d = dict(vars(self))
|
|
|
- d.pop('_mutex')
|
|
|
- return d
|
|
|
-
|
|
|
- def __setstate__(self, state):
|
|
|
- self.__dict__ = state
|
|
|
- self._mutex = threading.Lock()
|
|
|
-
|
|
|
+ def __reduce__(self):
|
|
|
+ return self.__class__, (
|
|
|
+ self.event_callback, self.workers, self.tasks, None,
|
|
|
+ self.max_workers_in_memory, self.max_tasks_in_memory,
|
|
|
+ )
|
|
|
|
|
|
state = State()
|