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.jsonlistspiders.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"}