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
--
http://mail.python.org/mailman/listinfo/python-list