diff --git a/scrapyd/launcher.py b/scrapyd/launcher.py index 1bc04f4c9..270209ebc 100644 --- a/scrapyd/launcher.py +++ b/scrapyd/launcher.py @@ -50,6 +50,7 @@ class Launcher(Service): def _process_finished(self, _, slot): process = self.processes.pop(slot) + process.end_time = datetime.now() self.finished.append(process) del self.finished[:-self.finished_to_keep] # keep last 100 finished jobs self._wait_for_project(slot) @@ -64,6 +65,7 @@ class ScrapyProcessProtocol(protocol.ProcessProtocol): self.spider = spider self.job = job self.start_time = datetime.now() + self.end_time = None self.env = env self.logfile = env['SCRAPY_LOG_FILE'] self.deferred = defer.Deferred() diff --git a/scrapyd/website.py b/scrapyd/website.py index 7f8c7791b..6fe5db997 100644 --- a/scrapyd/website.py +++ b/scrapyd/website.py @@ -25,7 +25,7 @@ class Root(resource.Resource): self.putChild('delversion.json', webservice.DeleteVersion(self)) self.putChild('listjobs.json', webservice.ListJobs(self)) self.putChild('logs', static.File(logsdir, 'text/plain')) - self.putChild('procmon', ProcessMonitor(self)) + self.putChild('jobs', Jobs(self)) self.update_projects() def update_projects(self): @@ -67,7 +67,7 @@ class Home(resource.Resource):
Available projects: %(projects)s
@@ -86,7 +86,7 @@ monitoring) """ % vars -class ProcessMonitor(resource.Resource): +class Jobs(resource.Resource): def __init__(self, root): resource.Resource.__init__(self) @@ -95,12 +95,19 @@ class ProcessMonitor(resource.Resource): def render(self, txrequest): s = "| Project | Spider | Job | PID | Runtime | Log | " - s += "
|---|---|---|---|---|---|
| Pending | |||||
| %s | " % project + s += "%s | " % str(m['name']) + s += "%s | " % str(m['_job']) + s += "|||
| Running | |||||
| %s | " % (datetime.now() - p.start_time) s += "Log | " % (p.project, p.spider, p.job) s += "||||
| Finished | |||||
| %s | " % getattr(p, a) + s += "" + s += " | %s | " % (p.end_time - p.start_time) + s += "Log | " % (p.project, p.spider, p.job) + s += "||