From a42a8cafefb00bdc7452d3ee33e04cc295ed1d5e Mon Sep 17 00:00:00 2001 From: Artem Bogomyagkov Date: Tue, 11 Sep 2012 21:06:36 +0300 Subject: [PATCH 1/3] added start and stop times for scrapyd list jobs web service --- scrapyd/webservice.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scrapyd/webservice.py b/scrapyd/webservice.py index 0757e7e20..95ce72fb7 100644 --- a/scrapyd/webservice.py +++ b/scrapyd/webservice.py @@ -1,6 +1,7 @@ import traceback import uuid from cStringIO import StringIO +from datetime import datetime from twisted.python import log @@ -96,7 +97,9 @@ class ListJobs(WsResource): running = [{"id": s.job, "spider": s.spider} for s in spiders if s.project == project] queue = self.root.poller.queues[project] pending = [{"id": x["_job"], "spider": x["name"]} for x in queue.list()] - finished = [{"id": s.job, "spider": s.spider} for s in self.root.launcher.finished + finished = [{"id": s.job, "spider": s.spider, + "start_time": datetime.isoformat(s.start_time), + "end_time": datetime.isoformat(s.end_time)} for s in self.root.launcher.finished if s.project == project] return {"status":"ok", "pending": pending, "running": running, "finished": finished} From 5dde26d3c80ada59d8a8b5a702527eff759d5d12 Mon Sep 17 00:00:00 2001 From: Artem Bogomyagkov Date: Wed, 12 Sep 2012 11:10:49 +0300 Subject: [PATCH 2/3] simplified code for finished jobs times, updated docs for scrapyd --- scrapyd/webservice.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scrapyd/webservice.py b/scrapyd/webservice.py index 95ce72fb7..3df47f1f1 100644 --- a/scrapyd/webservice.py +++ b/scrapyd/webservice.py @@ -1,7 +1,6 @@ import traceback import uuid from cStringIO import StringIO -from datetime import datetime from twisted.python import log @@ -98,8 +97,8 @@ class ListJobs(WsResource): queue = self.root.poller.queues[project] pending = [{"id": x["_job"], "spider": x["name"]} for x in queue.list()] finished = [{"id": s.job, "spider": s.spider, - "start_time": datetime.isoformat(s.start_time), - "end_time": datetime.isoformat(s.end_time)} for s in self.root.launcher.finished + "start_time": s.start_time.isoformat(' '), + "end_time": s.end_time.isoformat(' ')} for s in self.root.launcher.finished if s.project == project] return {"status":"ok", "pending": pending, "running": running, "finished": finished} From 4d8f253912356b5f21551cbd5914664bebb9a136 Mon Sep 17 00:00:00 2001 From: Artem Bogomyagkov Date: Wed, 12 Sep 2012 11:12:59 +0300 Subject: [PATCH 3/3] commited doc file missed from prev commit --- docs/topics/scrapyd.rst | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/topics/scrapyd.rst b/docs/topics/scrapyd.rst index 0b2e84825..26259b898 100644 --- a/docs/topics/scrapyd.rst +++ b/docs/topics/scrapyd.rst @@ -21,7 +21,7 @@ A common (and useful) convention to use for the version name is the revision number of the version control tool you're using to track your Scrapy project code. For example: ``r23``. The versions are not compared alphabetically but using a smarter algorithm (the same `distutils`_ uses) so ``r10`` compares -greater to ``r9``, for example. +greater to ``r9``, for example. How Scrapyd works ================= @@ -498,7 +498,7 @@ cancel.json .. versionadded:: 0.15 -Schedule a spider run (aka. job). If the job is pending, it will be removed. If +Cancel a spider run (aka. job). If the job is pending, it will be removed. If the job is running, it will be terminated. * Supported Request Methods: ``POST`` @@ -515,11 +515,6 @@ Example response:: {"status": "ok", "prevstate": "running"} -Example request passing a spider argument (``arg1``) and a setting -(:setting:`DOWNLOAD_DELAY`):: - - $ curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1 - listprojects.json ----------------- @@ -594,9 +589,14 @@ Example request:: Example response:: {"status": "ok", - "pending": ["26d1b1a6d6f111e0be5c001e648c57f8", "a0571c5b9493187adb5bd07ad0faf279a86251df"], - "running": ["422e608f9f28cef127b3d5ef93fe93992108bc5c"], - "finished": ["5c7fd9513b1796bcd9311dd0f59bcf8973c58859"]} + "pending": [{"id": "78391cc0fcaf11e1b0090800272a6d06", "spider": "spider1"}], + "running": [{"id": "422e608f9f28cef127b3d5ef93fe9399", "spider": "spider2"}], + "finished": [{"id": "2f16646cfcaf11e1b0090800272a6d06", "spider": "spider3", "start_time": "2012-09-12 10:14:03.594664", "end_time": "2012-09-12 10:24:03.594664"}]} + +Please note: + +* fields "start_time" and "end_time" for finished jobs were added after version 0.15.1 +* jobs data is stored in the memory so after the scrapyd service is restarted all information about pending, running and finished jobs is lost. delversion.json ---------------