From 47a7f154abf66c6e51cc3517c6a95aac004af5a7 Mon Sep 17 00:00:00 2001 From: Jochen Maes Date: Wed, 9 Mar 2011 14:22:10 -0200 Subject: [PATCH] Add listjobs.json to Scrapyd API You can use listjobs.json with project= to get a list of projects that are running currently. It returns a list of jobs with spidername and job-id. Signed-off-by: Jochen Maes --- scrapyd/webservice.py | 9 +++++++++ scrapyd/website.py | 1 + 2 files changed, 10 insertions(+), 0 deletions(-) --- scrapyd/webservice.py | 9 +++++++++ scrapyd/website.py | 1 + 2 files changed, 10 insertions(+) diff --git a/scrapyd/webservice.py b/scrapyd/webservice.py index 73af9f15d..637f807d7 100644 --- a/scrapyd/webservice.py +++ b/scrapyd/webservice.py @@ -87,3 +87,12 @@ class DeleteVersion(DeleteProject): self._delete_version(project, version) return {"status": "ok"} +class ListJobs(WsResource): + def render_POST(self, txrequest): + project = txrequest.args['project'][0] + spiders = self.root.launcher.processes.values() + jlist = list() + for s in spiders: + if project == s.project: + jlist.append({"job": {"id":s.job, "spider": s.spider}}) + return {"status":"ok", "jobs": jlist} diff --git a/scrapyd/website.py b/scrapyd/website.py index 4889ad1ca..db23de51f 100644 --- a/scrapyd/website.py +++ b/scrapyd/website.py @@ -22,6 +22,7 @@ class Root(resource.Resource): self.putChild('listspiders.json', webservice.ListSpiders(self)) self.putChild('delproject.json', webservice.DeleteProject(self)) 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.update_projects()