Force to read DOWNLOAD_TIMEOUT as int (for example to pass using

environment variable)
This commit is contained in:
Martin Olveyra 2014-11-21 01:09:32 -02:00
parent ed84231b60
commit 7910fa0172
2 changed files with 9 additions and 3 deletions

View File

@ -14,7 +14,7 @@ class DownloadTimeoutMiddleware(object):
@classmethod
def from_crawler(cls, crawler):
o = cls(crawler.settings['DOWNLOAD_TIMEOUT'])
o = cls(crawler.settings.getfloat('DOWNLOAD_TIMEOUT'))
crawler.signals.connect(o.spider_opened, signal=signals.spider_opened)
return o

View File

@ -8,8 +8,8 @@ from scrapy.utils.test import get_crawler
class DownloadTimeoutMiddlewareTest(unittest.TestCase):
def get_request_spider_mw(self):
crawler = get_crawler(Spider)
def get_request_spider_mw(self, settings=None):
crawler = get_crawler(Spider, settings)
spider = crawler._create_spider('foo')
request = Request('http://scrapytest.org/')
return request, spider, DownloadTimeoutMiddleware.from_crawler(crawler)
@ -20,6 +20,12 @@ class DownloadTimeoutMiddlewareTest(unittest.TestCase):
assert mw.process_request(req, spider) is None
self.assertEquals(req.meta.get('download_timeout'), 180)
def test_string_download_timeout(self):
req, spider, mw = self.get_request_spider_mw({'DOWNLOAD_TIMEOUT': '20.1'})
mw.spider_opened(spider)
assert mw.process_request(req, spider) is None
self.assertEquals(req.meta.get('download_timeout'), 20.1)
def test_spider_has_download_timeout(self):
req, spider, mw = self.get_request_spider_mw()
spider.download_timeout = 2