Skip to content

Commit c66f5f5

Browse files
committed
add debug info for downloader
1 parent 3b509f8 commit c66f5f5

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

pytradelib/downloader.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
1-
from __future__ import print_function
2-
3-
import urllib3.contrib.pyopenssl
4-
from pytradelib.utils import batch
5-
6-
urllib3.contrib.pyopenssl.inject_into_urllib3()
1+
from __future__ import print_function
72

83
import requests
94
import grequests
105
from gevent import monkey
116
monkey.patch_all()
127

8+
from pytradelib.utils import batch
139
from pytradelib.logger import logger
1410

1511

1612
class Downloader(object):
17-
def __init__(self, batch_size=100, sleep=None):
13+
def __init__(self, batch_size=25, sleep=None):
1814
self._batch_size = batch_size
1915
self._sleep = sleep
2016

@@ -55,20 +51,32 @@ def _download(self, url):
5551

5652
def _bulk_download(self, urls):
5753
results = []
58-
for batched_urls in batch(urls, self.batch_size, self.sleep):
54+
for i, batched_urls in enumerate(batch(urls, self.batch_size, self.sleep)):
5955
for r in self.__bulk_download(batched_urls):
60-
print('finished downloading ' + r.url)
61-
results.append( (r.url, r.content) )
56+
results.append((r.url, r.content))
57+
logger.debug('Downloaded %d of %d urls' % (
58+
(i * self.batch_size) + self.batch_size,
59+
len(urls)
60+
))
61+
logger.debug('got %d results' % len(results))
6262
return results
6363

6464
def __bulk_download(self, urls, errors=None):
6565
errors = errors or []
66+
67+
def log_response(response, **kwargs):
68+
logger.info('Download completed: ' + response.url)
69+
6670
def exception_handler(req, ex):
6771
msg = 'Failed to download ' + req.url
6872
if isinstance(ex, requests.exceptions.Timeout):
6973
msg = 'Connection timed out: %(ex)s (%(url)s)' % {'ex': ex.__str__(), 'url': req.url}
7074
elif isinstance(ex, requests.exceptions.RequestException):
7175
msg = 'Error downloading: %(ex)s (%(url)s)' % {'ex': ex, 'url': req.url}
76+
else:
77+
msg = ' '.join([msg, str(ex)])
7278
errors.append(req.url)
7379
logger.error(msg)
74-
return grequests.map((grequests.get(url) for url in urls), exception_handler=exception_handler)
80+
81+
return grequests.map((grequests.get(url, callback=log_response) for url in urls),
82+
exception_handler=exception_handler)

0 commit comments

Comments
 (0)