I have the following UDP class sending arrays of data at about 100Hz from six import string_types import socket import struct def convert_data(iterable): if isinstance(iterable, string_types): return str(iterable) data = tuple(iterable) format = "{0}H".format(len(data)) print("Sending data:", format, data) if max(data) > 2**16 - 1: raise ValueError(max(data)) if min(data) < 0: raise ValueError(min(data)) return struct.pack(format, *data) class UDP(object): def __init__(self, ip, port): self._ip = ip self._port = port self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.socket.connect((ip, port)) def send_data(self, data): message = convert_data(data) return self.socket.sendall(message) It gives the following error after successfully sending for about a minute: Traceback (most recent call last): File "take_analogue_data.py", line 13, in <module> File "take_analogue_data.py", line 8, in main File "/home/pi/nio-integration/hardware/raspi/UDP.py", line 22, in __init__ File "/usr/lib/python2.7/socket.py", line 187, in __init__ socket.error: [Errno 24] Too many open files I have looked for a solution. This Stack Overflow answer suggests increasing the number of possible files. I really don't think this is the solution I am looking for though. Is there something I can do? I was thinking that closing the connection each time might work, but I have already played around with a bunch of things. (I have tried send, sendall, and sendto -- none have worked) Note: I am running Python2.6 on Raspbian Wheezy on a Raspberry Pi Edit Another module is sending the data. It could look something like import UDP udp = UDP.UDP(IP, PORT) while(True): udp.send_data(range(8)) sleep(0.01) Continue reading...