API¶
以下のセクションでは、Scrapyd JSON APIで使用可能なリソースについて説明します。
daemonstatus.json¶
サービスの状態を確認します。
- サポートされるリクエストメソッド:
GET
リクエストの例:
curl http://localhost:6800/daemonstatus.json
レスポンスの例:
{ "status": "ok", "running": "0", "pending": "0", "finished": "0", "node_name": "node-name" }
addversion.json¶
プロジェクトにバージョンを追加します。プロジェクトが無い場合はプロジェクトを作成します。
- サポートされるリクエストメソッド:
POST
- 引数:
project
(string, 必須) - プロジェクト名version
(string, 必須) - バージョン名egg
(file, 必須) - プロジェクトのコードを含んだPython eggファイル
リクエストの例:
$ curl http://localhost:6800/addversion.json -F project=myproject -F version=r23 -F egg=@myproject.egg
レスポンスの例:
{"status": "ok", "spiders": 3}
注釈
Scrapydはバージョン番号を解釈する為に distutils LooseVersion を使用します。
デフォルトでプロジェクトの最新バージョンが、必要に応じて使用されます。
schedule.json と listspiders.json は、要求するプロジェクトのバージョンを明示的に指定できます。
schedule.json¶
スパイダーの実行(jobとも呼ばれる)をスケジュールし、job idを返します。
- サポートされるリクエストメソッド:
POST
- 引数:
project
(string, 必須) - プロジェクト名spider
(string, 必須) - スパイダーの名前setting
(string, 任意) - スパイダーを実行する時に使用するScrapy設定jobid
(string, 任意) - ジョブを識別するジョブ id。デフォルトで生成されたUUIDをオーバーライドします。_version
(string, 任意) - 使用するプロジェクトのバージョン- その他の引数はスパイダーの引数として渡されます。
リクエストの例:
$ curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider
レスポンスの例:
{"status": "ok", "jobid": "6487ec79947edab326d6db28a2d86511e8247444"}
リクエスト例は、スパイダーの引数(arg1
)と設定 (DOWNLOAD_DELAY):: を渡しています。
$ curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1
注釈
Scrapydは内部的に生成されたスパイダー引数を、スケジュールされたスパイダーに送信します。そのため、Scrapydにスケジュールされたスパイダーは、任意の数のキーワード引数を許容すべきです。
cancel.json¶
バージョン 0.15 で追加.
スパイダーの実行(ジョブとも呼ばれる)をキャンセルします。ジョブが保留中の場合、ジョブは削除されます。ジョブが実行中の場合、ジョブは中断されます。
- サポートされるリクエストメソッド:
POST
- 引数:
project
(string, 必須) - プロジェクト名job
(string, 必須) ジョブ id
リクエストの例:
$ curl http://localhost:6800/cancel.json -d project=myproject -d job=6487ec79947edab326d6db28a2d86511e8247444
レスポンスの例:
{"status": "ok", "prevstate": "running"}
listprojects.json¶
このScrapyサーバにアップロードされたプロジェクトのリストを取得します。
- サポートされるリクエストメソッド:
GET
- 引数: 無し
リクエストの例:
$ curl http://localhost:6800/listprojects.json
レスポンスの例:
{"status": "ok", "projects": ["myproject", "otherproject"]}
listversions.json¶
任意のプロジェクトの利用可能なバージョンを取得します。バージョンは現在使用しているバージョンが最後となる順番で返されます。
- サポートされるリクエストメソッド:
GET
- 引数:
project
(string, 必須) - プロジェクト名
リクエストの例:
$ curl http://localhost:6800/listversions.json?project=myproject
レスポンスの例:
{"status": "ok", "versions": ["r99", "r156"]}
listspiders.json¶
任意のプロジェクトの実行可能なスパイダーの最新バージョン(上書きされていない場合)のリストを取得します。
- サポートされるリクエストメソッド:
GET
- 引数:
project
(string, 必須) - プロジェクト名_version
(string, 任意) - 対象プロジェクトのバージョン
リクエストの例:
$ curl http://localhost:6800/listspiders.json?project=myproject
レスポンスの例:
{"status": "ok", "spiders": ["spider1", "spider2", "spider3"]}
listjobs.json¶
バージョン 0.15 で追加.
任意のプロジェクトの保留中、実行中、完了済みジョブのリストを取得します。
- サポートされるリクエストメソッド:
GET
- 引数:
project
(string, 任意) - 出力結果を指定したプロジェクトのジョブに限定します。
リクエストの例:
$ curl http://localhost:6800/listjobs.json?project=myproject | python -m json.tool
レスポンスの例:
{
"status": "ok",
"pending": [
{
"project": "myproject", "spider": "spider1",
"id": "78391cc0fcaf11e1b0090800272a6d06"
}
],
"running": [
{
"id": "422e608f9f28cef127b3d5ef93fe9399",
"project": "myproject", "spider": "spider2",
"start_time": "2012-09-12 10:14:03.594664"
}
],
"finished": [
{
"id": "2f16646cfcaf11e1b0090800272a6d06",
"project": "myproject", "spider": "spider3",
"start_time": "2012-09-12 10:14:03.594664",
"end_time": "2012-09-12 10:24:03.594664"
}
]
}
注釈
全てのジョブの情報はメモリに保持され、Scrapydサービスが再起動された時にリセットされます。issue 12 を参照してください。
delversion.json¶
プロジェクトのバージョンを削除します。指定されたプロジェクトの実行可能なバージョンが無くなる場合、プロジェクトも削除されます。
- サポートされるリクエストメソッド:
POST
- 引数:
project
(string, 必須) - プロジェクト名version
(string, 必須) - バージョン名
リクエストの例:
$ curl http://localhost:6800/delversion.json -d project=myproject -d version=r99
レスポンスの例:
{"status": "ok"}
delproject.json¶
全てのアップロードされたバージョンを含め、プロジェクトを削除します。
- サポートされるリクエストメソッド:
POST
- 引数:
project
(string, 必須) - プロジェクト名
リクエストの例:
$ curl http://localhost:6800/delproject.json -d project=myproject
レスポンスの例:
{"status": "ok"}