More Windows compatibility changes for EVT-37

This commit is contained in:
Ryan Williams
2009-08-14 16:44:28 -07:00
parent 2f813a0bdf
commit b0befa0f32
2 changed files with 20 additions and 13 deletions

View File

@@ -68,8 +68,10 @@ def wait_on_children():
def sig_child(signal, frame):
from eventlet import api
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):
"""Add the given popen4 object to the list of child

View File

@@ -47,9 +47,11 @@ __original_gethostbyname__ = socket.gethostbyname
__original_getaddrinfo__ = socket.getaddrinfo
try:
__original_fromfd__ = socket.fromfd
__original_fork__ = os.fork
except AttributeError:
# Windows
__original_fromfd__ = None
__original_fork__ = None
def tcp_socket():
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
if use_thread_pool:
from eventlet import tpool
def new_gethostbyname(*args, **kw):
return tpool.execute(
__original_gethostbyname__, *args, **kw)
socket.gethostbyname = new_gethostbyname
try:
from eventlet import tpool
def new_gethostbyname(*args, **kw):
return tpool.execute(
__original_gethostbyname__, *args, **kw)
socket.gethostbyname = new_gethostbyname
def new_getaddrinfo(*args, **kw):
return tpool.execute(
__original_getaddrinfo__, *args, **kw)
socket.getaddrinfo = new_getaddrinfo
def new_getaddrinfo(*args, **kw):
return tpool.execute(
__original_getaddrinfo__, *args, **kw)
socket.getaddrinfo = new_getaddrinfo
except ImportError:
pass # Windows
if __original_fromfd__ is not None:
def new_fromfd(*args, **kw):
@@ -124,7 +129,6 @@ __original_fdopen__ = os.fdopen
__original_read__ = os.read
__original_write__ = os.write
__original_waitpid__ = os.waitpid
__original_fork__ = os.fork
## 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.read = new_read
os.write = new_write
os.fork = new_fork
if __original_fork is not None:
os.fork = new_fork
os.waitpid = new_waitpid
__original_select__ = select.select