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

Terry Reedy tjreedy at udel.edu
Sat Mar 20 17:33:01 CET 2010


On 3/20/2010 10:52 AM, News123 wrote:
> 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

I agree. I would guess that the difference is not intentional.

> request. However I am not at all aware of the issue reporting process
> concerning python. (special site / module developer, PEP . . . )

bugs.python.org

Terry Jan Reedy




More information about the Python-list mailing list