Hello there, I am almost done converting my application from python 1.5.2 to python 2.7.1 on a HP-UX 11 Itanium box. My application server will set a listening port, accepting request from multiple clients. The code just works fine in the old python environment. E.g. when I do a lsof | grep <listening port> I got the following. python 62602 genasm 5u IPv4 0x7350d1f0 0t0 TCP zmy02aix02:12121 (LISTEN) python 62602 genasm 6u IPv4 0x744fb5f0 0t0 TCP zmy02aix02:12121->zmy02aix02-bkup:51867 (ESTABLISHED) python 62602 genasm 7u IPv4 0x75b959f0 0t0 TCP zmy02aix02:12121->zmy02aix02-bkup:51869 (ESTABLISHED) python 62602 genasm 8u IPv4 0x75a559f0 0t0 TCP zmy02aix02:12121->zmy02aix02-bkup:51873 (ESTABLISHED) Strange things happened in python 2.7.1. Without modifying the code of how the socket was created and how the TCP/IP address was bound to the socket, it seems that every other processes that I run, which supposed to connect to the listening port as a client program, also appears to be holding a listening port. This is weird. Anyone has encountered this before especially when you were converting from an old python to a new python? Like you can see below there are 5 processes hosting the listening port of 18882. $ lsof -i tcp | grep 18882 python 10598 r32813 3u IPv4 0xe00000050b73e400 0t0 TCP zmy02hp3.ap.freescale.net:18882 (LISTEN) python 18181 r32813 3u IPv4 0xe00000050b73e400 0t0 TCP zmy02hp3.ap.freescale.net:18882 (LISTEN) python 20025 r32813 3u IPv4 0xe00000050b73e400 0t0 TCP zmy02hp3.ap.freescale.net:18882 (LISTEN) python 26295 r32813 3u IPv4 0xe00000050b73e400 0t0 TCP zmy02hp3.ap.freescale.net:18882 (LISTEN) python 26428 r32813 3u IPv4 0xe00000050b73e400 0t0 TCP zmy02hp3.ap.freescale.net:18882 (LISTEN) Since only one of them is the genuine process holding the port, I need to kill off the rest of them if I need to restart the process which is the legitimate owner of the listening port. It should not work this way. Here is the code of the application process that hosts the listening port. self.sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) self.sock.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 ) self.sock.setsockopt( socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1 self.sock.setsockopt( socket.IPPROTO_TCP, _TCP_NODELAY, 1 ) self.sock.bind( self.server_address ) Here is the client code that does the connection. self.sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) self.sock.setsockopt( socket.IPPROTO_TCP, _TCP_NODELAY, 1 ) self.sock.connect( self.server_address )
Hope to hear something from the community. Regards, Wah Meng _______________________________________________ BangPypers mailing list [email protected] http://mail.python.org/mailman/listinfo/bangpypers
