2017-01-10 2 views
1

scrapydによって制御されるスパイダーをインストール/有効にする適切な方法は何ですか?scrapydによって制御される更新スパイダーコード

scrapyd-deployを使用して新しいスパイダー・バージョンをインストールします。ジョブが現在実行中です。 cancel.jsonを使用してジョブを停止してから、新しいジョブをスケジュールする必要がありますか?自分の質問に答える

答えて

0

は、私は、実行中のすべてのスパイダーを停止して少し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)が必要です
関連する問題