summaryrefslogtreecommitdiff
path: root/gear/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'gear/__init__.py')
-rw-r--r--gear/__init__.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/gear/__init__.py b/gear/__init__.py
index f7fc767..4a0fcb7 100644
--- a/gear/__init__.py
+++ b/gear/__init__.py
@@ -15,6 +15,7 @@
import errno
import logging
import os
+import random
import select
import six
import socket
@@ -3295,7 +3296,13 @@ class Server(BaseClientServer):
def wakeConnections(self, job=None):
p = Packet(constants.RES, constants.NOOP, b'')
- for connection in self.active_connections:
+
+ # Use a randomized copy of active_connections to try
+ # to spread workload across the machines that workers are on.
+ conns = self.active_connections[:]
+ random.shuffle(conns) # Modifies the list
+
+ for connection in conns:
if connection.state == 'SLEEP':
if ((job and job.name in connection.functions) or
(job is None)):