|
| 1 | +from __future__ import absolute_import |
1 | 2 | import random
|
2 | 3 | import warnings
|
3 | 4 | from time import time
|
| 5 | +from datetime import datetime |
4 | 6 | from collections import deque
|
5 | 7 |
|
6 | 8 | from twisted.internet import reactor, defer, task
|
7 | 9 |
|
8 | 10 | from scrapy.utils.defer import mustbe_deferred
|
9 | 11 | from scrapy.utils.httpobj import urlparse_cached
|
10 | 12 | from scrapy.resolver import dnscache
|
11 |
| -from scrapy.exceptions import ScrapyDeprecationWarning |
12 | 13 | from scrapy import signals
|
13 | 14 | from .middleware import DownloaderMiddlewareManager
|
14 | 15 | from .handlers import DownloadHandlers
|
@@ -40,6 +41,21 @@ def close(self):
|
40 | 41 | if self.latercall and self.latercall.active():
|
41 | 42 | self.latercall.cancel()
|
42 | 43 |
|
| 44 | + def __repr__(self): |
| 45 | + cls_name = self.__class__.__name__ |
| 46 | + return "%s(concurrency=%r, delay=%0.2f, randomize_delay=%r)" % ( |
| 47 | + cls_name, self.concurrency, self.delay, self.randomize_delay) |
| 48 | + |
| 49 | + def __str__(self): |
| 50 | + return ( |
| 51 | + "<downloader.Slot concurrency=%r delay=%0.2f randomize_delay=%r " |
| 52 | + "len(active)=%d len(queue)=%d len(transferring)=%d lastseen=%s>" % ( |
| 53 | + self.concurrency, self.delay, self.randomize_delay, |
| 54 | + len(self.active), len(self.queue), len(self.transferring), |
| 55 | + datetime.fromtimestamp(self.lastseen).isoformat() |
| 56 | + ) |
| 57 | + ) |
| 58 | + |
43 | 59 |
|
44 | 60 | def _get_concurrency_delay(concurrency, spider, settings):
|
45 | 61 | delay = settings.getfloat('DOWNLOAD_DELAY')
|
|
0 commit comments