More Windows compatibility changes for EVT-37
This commit is contained in:
@@ -68,8 +68,10 @@ def wait_on_children():
|
|||||||
def sig_child(signal, frame):
|
def sig_child(signal, frame):
|
||||||
from eventlet import api
|
from eventlet import api
|
||||||
api.call_after_global(0, wait_on_children)
|
api.call_after_global(0, wait_on_children)
|
||||||
signal.signal(signal.SIGCHLD, sig_child)
|
try:
|
||||||
|
signal.signal(signal.SIGCHLD, sig_child)
|
||||||
|
except AttributeError:
|
||||||
|
pass # Windows
|
||||||
|
|
||||||
def _add_child_pobj(pobj):
|
def _add_child_pobj(pobj):
|
||||||
"""Add the given popen4 object to the list of child
|
"""Add the given popen4 object to the list of child
|
||||||
|
@@ -47,9 +47,11 @@ __original_gethostbyname__ = socket.gethostbyname
|
|||||||
__original_getaddrinfo__ = socket.getaddrinfo
|
__original_getaddrinfo__ = socket.getaddrinfo
|
||||||
try:
|
try:
|
||||||
__original_fromfd__ = socket.fromfd
|
__original_fromfd__ = socket.fromfd
|
||||||
|
__original_fork__ = os.fork
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# Windows
|
# Windows
|
||||||
__original_fromfd__ = None
|
__original_fromfd__ = None
|
||||||
|
__original_fork__ = None
|
||||||
|
|
||||||
def tcp_socket():
|
def tcp_socket():
|
||||||
s = __original_socket__(socket.AF_INET, socket.SOCK_STREAM)
|
s = __original_socket__(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
@@ -100,16 +102,19 @@ def wrap_socket_with_coroutine_socket(use_thread_pool=True):
|
|||||||
socket.ssl = wrap_ssl_obj
|
socket.ssl = wrap_ssl_obj
|
||||||
|
|
||||||
if use_thread_pool:
|
if use_thread_pool:
|
||||||
from eventlet import tpool
|
try:
|
||||||
def new_gethostbyname(*args, **kw):
|
from eventlet import tpool
|
||||||
return tpool.execute(
|
def new_gethostbyname(*args, **kw):
|
||||||
__original_gethostbyname__, *args, **kw)
|
return tpool.execute(
|
||||||
socket.gethostbyname = new_gethostbyname
|
__original_gethostbyname__, *args, **kw)
|
||||||
|
socket.gethostbyname = new_gethostbyname
|
||||||
|
|
||||||
def new_getaddrinfo(*args, **kw):
|
def new_getaddrinfo(*args, **kw):
|
||||||
return tpool.execute(
|
return tpool.execute(
|
||||||
__original_getaddrinfo__, *args, **kw)
|
__original_getaddrinfo__, *args, **kw)
|
||||||
socket.getaddrinfo = new_getaddrinfo
|
socket.getaddrinfo = new_getaddrinfo
|
||||||
|
except ImportError:
|
||||||
|
pass # Windows
|
||||||
|
|
||||||
if __original_fromfd__ is not None:
|
if __original_fromfd__ is not None:
|
||||||
def new_fromfd(*args, **kw):
|
def new_fromfd(*args, **kw):
|
||||||
@@ -124,7 +129,6 @@ __original_fdopen__ = os.fdopen
|
|||||||
__original_read__ = os.read
|
__original_read__ = os.read
|
||||||
__original_write__ = os.write
|
__original_write__ = os.write
|
||||||
__original_waitpid__ = os.waitpid
|
__original_waitpid__ = os.waitpid
|
||||||
__original_fork__ = os.fork
|
|
||||||
## TODO wrappings for popen functions? not really needed since Process object exists?
|
## TODO wrappings for popen functions? not really needed since Process object exists?
|
||||||
|
|
||||||
|
|
||||||
@@ -171,7 +175,8 @@ def wrap_pipes_with_coroutine_pipes():
|
|||||||
os.fdopen = new_fdopen
|
os.fdopen = new_fdopen
|
||||||
os.read = new_read
|
os.read = new_read
|
||||||
os.write = new_write
|
os.write = new_write
|
||||||
os.fork = new_fork
|
if __original_fork is not None:
|
||||||
|
os.fork = new_fork
|
||||||
os.waitpid = new_waitpid
|
os.waitpid = new_waitpid
|
||||||
|
|
||||||
__original_select__ = select.select
|
__original_select__ = select.select
|
||||||
|
Reference in New Issue
Block a user