D
Daniel Platz
Hello!
I have a problem with passing a socket to a subprocess in windows. It
works in Linux and for windows there is a workaround in the Python
doc. However, this workaround does not work. It was already noted by
other people and they Python issue tracker
http://bugs.python.org/issue5879
***************************************************************************************************************
the example from
http://docs.python.org/library/multiprocessing.html?highlight=multiprocessing#module-multiprocessing
named "
# Example where a pool of http servers share a single listening socket
#
"
does not work on windows.
Reason:
s = socket.fromfd(fd, family, type_, proto)
in line 156 of reduction.py
fails, because fromfd is not available on windows. Sad thing:
reduction.py was put into processing.py exactly to solve that problem
(i.e. reduction.py is provided as workaround for socket.fromfd not
available on windows, from the documentation:
if sys.platform == 'win32':
import multiprocessing.reduction
# make sockets pickable/inheritable
the solution within processing was:
try:
fromfd = socket.fromfd
except AttributeError:
def fromfd(fd, family, type, proto=0):
s = socket._socket.socket()
_processing.changeFd(s, fd, family, type, proto)
return s
but: _multiprocessing has no longer a method changeFd.
Harald
***********************************************************************************************************************
Has someone information about this or can help me to solve the
problem.
Thanks in advance
Daniel
I have a problem with passing a socket to a subprocess in windows. It
works in Linux and for windows there is a workaround in the Python
doc. However, this workaround does not work. It was already noted by
other people and they Python issue tracker
http://bugs.python.org/issue5879
***************************************************************************************************************
the example from
http://docs.python.org/library/multiprocessing.html?highlight=multiprocessing#module-multiprocessing
named "
# Example where a pool of http servers share a single listening socket
#
"
does not work on windows.
Reason:
s = socket.fromfd(fd, family, type_, proto)
in line 156 of reduction.py
fails, because fromfd is not available on windows. Sad thing:
reduction.py was put into processing.py exactly to solve that problem
(i.e. reduction.py is provided as workaround for socket.fromfd not
available on windows, from the documentation:
if sys.platform == 'win32':
import multiprocessing.reduction
# make sockets pickable/inheritable
the solution within processing was:
try:
fromfd = socket.fromfd
except AttributeError:
def fromfd(fd, family, type, proto=0):
s = socket._socket.socket()
_processing.changeFd(s, fd, family, type, proto)
return s
but: _multiprocessing has no longer a method changeFd.
Harald
***********************************************************************************************************************
Has someone information about this or can help me to solve the
problem.
Thanks in advance
Daniel