Name resolvers: do not pass the reactor to the install method

This commit is contained in:
Eugenio Lacuesta 2020-01-16 20:14:52 -03:00
parent 3cfa73b8b1
commit 1040f581ec
No known key found for this signature in database
GPG Key ID: DA3EF2D0913E9810
2 changed files with 9 additions and 7 deletions

View File

@ -306,7 +306,7 @@ class CrawlerProcess(CrawlerRunner):
resolver_class = load_object(self.settings["DNS_RESOLVER"])
resolver = create_instance(resolver_class, self.settings, self, reactor=reactor)
resolver.install_on_reactor(reactor)
resolver.install_on_reactor()
tp = reactor.getThreadPool()
tp.adjustPoolsize(maxthreads=self.settings.getint('REACTOR_THREADPOOL_MAXSIZE'))
reactor.addSystemEventTrigger('before', 'shutdown', self.stop)

View File

@ -19,6 +19,7 @@ class CachingThreadedResolver(ThreadedResolver):
def __init__(self, reactor, cache_size, timeout):
super(CachingThreadedResolver, self).__init__(reactor)
dnscache.limit = cache_size
self.reactor = reactor
self.timeout = timeout
@classmethod
@ -29,8 +30,8 @@ class CachingThreadedResolver(ThreadedResolver):
cache_size = 0
return cls(reactor, cache_size, crawler.settings.getfloat('DNS_TIMEOUT'))
def install_on_reactor(self, reactor):
reactor.installResolver(self)
def install_on_reactor(self,):
self.reactor.installResolver(self)
def getHostByName(self, name, timeout=None):
if name in dnscache:
@ -58,7 +59,8 @@ class CachingHostnameResolver:
"""
def __init__(self, reactor, cache_size):
self.resolver = reactor.nameResolver
self.reactor = reactor
self.original_resolver = reactor.nameResolver
dnscache.limit = cache_size
@classmethod
@ -69,8 +71,8 @@ class CachingHostnameResolver:
cache_size = 0
return cls(reactor, cache_size)
def install_on_reactor(self, reactor):
reactor.installNameResolver(self)
def install_on_reactor(self):
self.reactor.installNameResolver(self)
def resolveHostName(self, resolutionReceiver, hostName, portNumber=0,
addressTypes=None, transportSemantics='TCP'):
@ -95,7 +97,7 @@ class CachingHostnameResolver:
try:
result = dnscache[hostName]
except KeyError:
result = self.resolver.resolveHostName(
result = self.original_resolver.resolveHostName(
CachingResolutionReceiver(),
hostName,
portNumber,