diff --git a/devices/clients/sst_client.py b/devices/clients/sst_client.py
index ed542159c2668ff11b7afcb5b91dfc898e5c5947..a53c849b26a18d4fcb35d7ee5518c17f365240ae 100644
--- a/devices/clients/sst_client.py
+++ b/devices/clients/sst_client.py
@@ -2,7 +2,7 @@ from threading import Thread
 import socket
 from util.comms_client import CommClient
 
-from collections import deque
+from queue import Queue
 
 import numpy
 import logging
@@ -45,15 +45,15 @@ class sst_client(CommClient):
         Function used to connect to the client.
         """
         if not self.connected:
-            self.deque = deque(maxlen=1024)
-            self.udp = UDP_Receiver(self.host, self.port, self.deque, self.streams, self.buffersize, self.timeout)
-            self.sst = SST(self.deque, self.streams)
+            self.queue = Queue(maxsize=1024)
+            self.udp = UDP_Receiver(self.host, self.port, self.queue, self.streams, self.buffersize, self.timeout)
+            self.sst = SST(self.queue, self.streams)
             return super().connect()
 
     def disconnect(self):
         del self.udp
         del self.sst
-        del self.deque
+        del self.queue
 
         return super().disconnect()
 
@@ -103,10 +103,10 @@ class UDP_Receiver(Thread):
     This class provides a small wrapper for the OPC ua read/write functions in order to better organise the code
     """
 
-    def __init__(self, host, port, deque, streams, buffersize=9000, timeout=0.1):
+    def __init__(self, host, port, queue, streams, buffersize=9000, timeout=0.1):
 
         self.streams = streams
-        self.deque = deque
+        self.queue = queue
         self.host = host
         self.port = port
         self.buffersize = buffersize
@@ -130,7 +130,7 @@ class UDP_Receiver(Thread):
             try:
                 packet = [bytearray(self.buffersize)]
                 self.sock.recvmsg_into(packet[0:self.buffersize])
-                self.deque.append(packet)
+                self.queue.put_nowait(packet)
 
             except socket.timeout:
                 pass
@@ -141,10 +141,10 @@ class UDP_Receiver(Thread):
 
 
 class SST(Thread):
-    def __init__(self, deque, streams):
+    def __init__(self, queue, streams):
 
         self.streams = streams
-        self.deque = deque
+        self.queue = queue
         self.last_packet = None
 
         self.parameters = {
@@ -160,17 +160,17 @@ class SST(Thread):
 
         while True:
 
-            if len(self.deque) > 0:
-                packet = self.deque.popleft()
 
-                if packet is None:
-                    self.deque.clear()
-                    break
+            packet = self.queue.get()
 
-                self.process_packet(packet)
+            if packet is None:
+                self.queue.clear()
+                break
+
+            self.process_packet(packet)
 
     def __del__(self):
-        self.deque.appendleft(None)
+        self.queue.put(None)
         self.join()
 
     def process_packet(self, packet):