fixed green.socket not to force hub setup at import time
This commit is contained in:
@@ -10,21 +10,27 @@ from eventlet.greenio import GreenSocket as socket, GreenSSL as _GreenSSL
|
||||
def fromfd(*args):
|
||||
return socket(__socket.fromfd(*args))
|
||||
|
||||
if type(get_hub()).__name__ == 'TwistedHub':
|
||||
from eventlet.twistedutil import block_on as _block_on
|
||||
def gethostbyname(name):
|
||||
from twisted.internet import reactor
|
||||
return _block_on(reactor.resolve(name))
|
||||
if getattr(get_hub(), 'uses_twisted_reactor', None):
|
||||
globals()['gethostbyname'] = _gethostbyname_twisted
|
||||
else:
|
||||
globals()['gethostbyname'] = _gethostbyname_tpool
|
||||
return globals()['gethostbyname'](name)
|
||||
|
||||
def _gethostbyname_twisted(name):
|
||||
from twisted.internet import reactor
|
||||
from eventlet.twistedutil import block_on as _block_on
|
||||
return _block_on(reactor.resolve(name))
|
||||
|
||||
def _gethostbyname_tpool(name):
|
||||
from eventlet import tpool
|
||||
def gethostbyname(*args, **kw):
|
||||
return tpool.execute(
|
||||
__socket.gethostbyname, *args, **kw)
|
||||
|
||||
def getaddrinfo(*args, **kw):
|
||||
return tpool.execute(
|
||||
__socket.getaddrinfo, *args, **kw)
|
||||
__socket.gethostbyname, name)
|
||||
|
||||
# def getaddrinfo(*args, **kw):
|
||||
# return tpool.execute(
|
||||
# __socket.getaddrinfo, *args, **kw)
|
||||
#
|
||||
# XXX there're few more blocking functions in socket
|
||||
# XXX having a hub-independent way to access thread pool would be nice
|
||||
|
||||
|
@@ -66,6 +66,11 @@ class BaseTwistedHub(object):
|
||||
This makes running "green" functions in the main greenlet impossible but is useful
|
||||
when you want to call reactor.run() yourself.
|
||||
"""
|
||||
|
||||
# XXX: remove me from here. make functions that depend on reactor
|
||||
# XXX: hub's methods
|
||||
uses_twisted_reactor = True
|
||||
|
||||
def __init__(self, mainloop_greenlet):
|
||||
self.greenlet = mainloop_greenlet
|
||||
self.waiters_by_greenlet = {}
|
||||
|
Reference in New Issue
Block a user