1
scrapydによって制御されるスパイダーをインストール/有効にする適切な方法は何ですか?scrapydによって制御される更新スパイダーコード
scrapyd-deployを使用して新しいスパイダー・バージョンをインストールします。ジョブが現在実行中です。 cancel.json
を使用してジョブを停止してから、新しいジョブをスケジュールする必要がありますか?自分の質問に答える
scrapydによって制御されるスパイダーをインストール/有効にする適切な方法は何ですか?scrapydによって制御される更新スパイダーコード
scrapyd-deployを使用して新しいスパイダー・バージョンをインストールします。ジョブが現在実行中です。 cancel.json
を使用してジョブを停止してから、新しいジョブをスケジュールする必要がありますか?自分の質問に答える
:
は、私は、実行中のすべてのスパイダーを停止して少しPythonスクリプトを書きました。このスクリプトを実行した後、私はscrapyd-deploy
を実行し、スパイダーを再起動します。 これは治療のプロがそれを行う方法であるかどうかまだ分かりませんが、それは私にとって賢明です。
import requests
import sys
import time
PROJECT = 'crawler' # replace with your project's name
resp = requests.get("http://localhost:6800/listjobs.json?project=%s" % PROJECT)
list_json = resp.json()
failed = False
count = len(list_json["running"])
if count == 0:
print "No running spiders found."
sys.exit(0)
for sp in list_json["running"]:
# cancel this spider
r = requests.post("http://localhost:6800/cancel.json", data={"project":PROJECT, "job": sp["id"]})
print "Sent cancel request for %s %s" % (sp["spider"], sp["id"])
print "Status: %s" % r.json()
if r.json()["status"] != "ok":
print "ERROR: Failed to stop spider %s" % sp["spider"]
failed = True
if failed:
sys.exit(1)
# poll running spiders and wait until all spiders are down
while count:
time.sleep(2)
resp = requests.get("http://localhost:6800/listjobs.json?project=%s" % PROJECT)
count = len(resp.json()["running"])
print "%d spiders still running" % count
:
この
は、スクリプト(あなたに合わせてPROJECT
の値を置き換えます)、それは
requests
パッケージ(
pip install requests
)が必要です