diff --git a/scrapy/contrib/webconsole/spiderctl.py b/scrapy/contrib/webconsole/spiderctl.py index 853479179..bae839e72 100644 --- a/scrapy/contrib/webconsole/spiderctl.py +++ b/scrapy/contrib/webconsole/spiderctl.py @@ -16,7 +16,7 @@ class Spiderctl(object): webconsole_name = 'Spider control panel' def __init__(self): - self.running = set() + self.running = {} self.finished = set() dispatcher.connect(self.domain_opened, signal=signals.domain_opened) dispatcher.connect(self.domain_closed, signal=signals.domain_closed) @@ -24,42 +24,41 @@ class Spiderctl(object): from scrapy.management.web import webconsole_discover_module dispatcher.connect(self.webconsole_discover_module, signal=webconsole_discover_module) - def domain_opened(self, domain, spider): - self.running.add(domain) + def domain_opened(self, spider): + self.running[spider.domain_name] = spider - def domain_closed(self, domain, spider): - self.running.remove(domain) - self.finished.add(domain) + def domain_closed(self, spider): + del self.running[spider.domain_name] + self.finished.add(spider.domain_name) def webconsole_render(self, wc_request): if wc_request.args: changes = self.webconsole_control(wc_request) - enabled_domains = spiders.list() - self.scheduled = scrapyengine.domain_scheduler.pending_domains - self.idle = [d for d in enabled_domains if d not in self.scheduled + self.scheduled = [s.domain_name for s in scrapyengine.spider_scheduler._pending_spiders] + self.idle = [d for d in self.enabled_domains if d not in self.scheduled and d not in self.running and d not in self.finished] s = banner(self) s += '
| Running (%d/%d) | Scheduled (%d) | Finished (%d) | Idle (%d) |
|---|---|---|---|
| Idle (%d) | Scheduled (%d) | Running (%d/%d) | Finished (%d) |
| \n" s += '\n' s += " | \n" @@ -76,6 +75,18 @@ class Spiderctl(object): s += "\n" + # running + s += "\n" + s += '\n' + s += " | \n" + # finished s += "\n" s += '\n' s += " | \n" - # idle - s += "\n" - s += '\n' - s += " | \n" - s += "
| \n" - - s += " | \n" - s += '\n' - s += ' | \n' - - s += "\n" - - s += " | \n" - s += '\n' - s += " | \n" - - s += "
" - s += "Stopped spiders:
" s += "Removed scheduled spiders:
" - s += "Removed:
" - s += "Not removed:
" s += "Scheduled spiders:
" - s += "Scheduled:
" - s += "Not scheduled: