why is there now execption for windows? trying to listen twice to the same port

News123 news1234 at free.fr
Sat Mar 20 10:52:05 EDT 2010


Hi Irmen,


Irmen de Jong wrote:
> On 20-3-2010 14:38, News123 wrote:
>> I'm having a small multiprocessing manager:
>>
>> # ##########################
>> import socket,sys
>> from multiprocessing.managers import BaseManager
>>
>> mngr = BaseManager(address=('127.0.0.1',8089),authkey='verysecret')
>> try:
>>      srvr = mngr.get_server()
>> except socket.error as e:
>>      print "probably address already in use"
>>      sys.exit()
>> print "serving"
>> srvr.serve_forever()
>>
>> Under Windows however the program can be started twice.
>> and will print twice "serving". This surprises me
> 
> 
> My guess is that somewhere in the multiprocessing package the
> SO_REUSEADDR option is used on the socket. And that option has different
> semantics on Windows than it has on other operating systems. At least
> one of them being the possibility of multiple bindings on the same port
> without getting an error.
> See http://bugs.python.org/issue2550.
> Also see the code comments to bind_port in Lib/test/test_support.py,
> that suggests using SO_EXCLUSIVEADDRUSE instead under Windows, but that
> is not much use to you unless you monkeypatch the multiprocessing
> package code.
> 

Yes this might be.


Then I think, that I should report it either as bug / enhancement
request. However I am not at all aware of the issue reporting process
concerning python. (special site / module developer, PEP . . . )

For the short term:
I wonder now how to solve my problem that only one manager is started
and the second one should just aborts.

Some days ago I started a discussion in the thread
"how to start a python script only once".
I hoped, that the listening socket of the manager would just take care
of the issue.

N










More information about the Python-list mailing list