On Nov 20, 4:00 pm, [EMAIL PROTECTED] wrote: > On 20 Nov, 16:03, Krzysztof Retel <[EMAIL PROTECTED]> > wrote: > > > > > Hi guys, > > > I am struggling writing fast UDP server. It has to handle around 10000 > > UDP packets per second. I started building that with non blocking > > socket and threads. Unfortunately my approach does not work at all. > > I wrote a simple case test: client and server. The client sends 2200 > > packets within 0.137447118759 secs. The tcpdump received 2189 packets, > > which is not bad at all. > > But the server only handles 700 -- 870 packets, when it is non- > > blocking, and only 670 – 700 received with blocking sockets. > > The client and the server are working within the same local network > > and tcpdump shows pretty correct amount of packets received. > > > I included a bit of the code of the UDP server. > > > class PacketReceive(threading.Thread): > > def __init__(self, tname, socket, queue): > > self._tname = tname > > self._socket = socket > > self._queue = queue > > threading.Thread.__init__(self, name=self._tname) > > > def run(self): > > print 'Started thread: ', self.getName() > > cnt = 1 > > cnt_msgs = 0 > > while True: > > try: > > data = self._socket.recv(512) > > msg = data > > cnt_msgs += 1 > > total += 1 > > # self._queue.put(msg) > > print 'thread: %s, cnt_msgs: %d' % (self.getName(), > > cnt_msgs) > > except: > > pass > > > I was also using Queue, but this didn't help neither. > > Any idea what I am doing wrong? > > > I was reading that Python socket modules was causing some delays with > > TCP server. They recomended to set up socket option for nondelays: > > "sock.setsockopt(SOL_TCP, TCP_NODELAY, 1) ". I couldn't find any > > similar option for UDP type sockets. > > Is there anything I have to change in socket options to make it > > working faster? > > Why the server can't process all incomming packets? Is there a bug in > > the socket layer? btw. I am using Python 2.5 on Ubuntu 8.10. > > > Cheers > > K > > Stupid question: did you try removing the print (e.g. printing once > every 100 messages) ?
:) Of course I did Nothing has changed I wonder if there is a kind of setting for socket to allow no delays? -- http://mail.python.org/mailman/listinfo/python-list