2012-02-06 11 views
6

私はScrapydを実行していて、同時に4つのスパイダーを起動すると奇妙な問題に遭遇します。Scrapyのスクレイピーがスケジューリングスパイダーで遅すぎる

2012-02-06 15:27:17+0100 [HTTPChannel,0,127.0.0.1] 127.0.0.1 - - [06/Feb/2012:14:27:16 +0000] "POST /schedule.json HTTP/1.1" 200 62 "-" "python-requests/0.10.1" 
2012-02-06 15:27:17+0100 [HTTPChannel,1,127.0.0.1] 127.0.0.1 - - [06/Feb/2012:14:27:16 +0000] "POST /schedule.json HTTP/1.1" 200 62 "-" "python-requests/0.10.1" 
2012-02-06 15:27:17+0100 [HTTPChannel,2,127.0.0.1] 127.0.0.1 - - [06/Feb/2012:14:27:16 +0000] "POST /schedule.json HTTP/1.1" 200 62 "-" "python-requests/0.10.1" 
2012-02-06 15:27:17+0100 [HTTPChannel,3,127.0.0.1] 127.0.0.1 - - [06/Feb/2012:14:27:16 +0000] "POST /schedule.json HTTP/1.1" 200 62 "-" "python-requests/0.10.1" 
2012-02-06 15:27:18+0100 [Launcher] Process started: project='thz' spider='spider_1' job='abb6b62650ce11e19123c8bcc8cc6233' pid=2545 
2012-02-06 15:27:19+0100 [Launcher] Process finished: project='thz' spider='spider_1' job='abb6b62650ce11e19123c8bcc8cc6233' pid=2545 
2012-02-06 15:27:23+0100 [Launcher] Process started: project='thz' spider='spider_2' job='abb72f8e50ce11e19123c8bcc8cc6233' pid=2546 
2012-02-06 15:27:24+0100 [Launcher] Process finished: project='thz' spider='spider_2' job='abb72f8e50ce11e19123c8bcc8cc6233' pid=2546 
2012-02-06 15:27:28+0100 [Launcher] Process started: project='thz' spider='spider_3' job='abb76f6250ce11e19123c8bcc8cc6233' pid=2547 
2012-02-06 15:27:29+0100 [Launcher] Process finished: project='thz' spider='spider_3' job='abb76f6250ce11e19123c8bcc8cc6233' pid=2547 
2012-02-06 15:27:33+0100 [Launcher] Process started: project='thz' spider='spider_4' job='abb7bb8e50ce11e19123c8bcc8cc6233' pid=2549 
2012-02-06 15:27:35+0100 [Launcher] Process finished: project='thz' spider='spider_4' job='abb7bb8e50ce11e19123c8bcc8cc6233' pid=2549 

私はすでにScrapydのため、これらの設定を持っている:

[scrapyd] 
max_proc = 10 

はなぜScrapydは、それらが予定されているよう速いと、同時にクモを実行していませんか?

答えて

7
私は timer = TimerService(0.1, poller.poll)timer = TimerService(5, poller.poll)を変更ライン30

に編集scrapyd/app.pyことによってそれを解決してきました

EDIT: は、構成設定に関するAliBZすることにより以下のコメントを変更するためのより良い方法です。ポーリング頻度。

+2

[scrapyd](https://github.com/scrapy/scrapyd/blob/master/scrapyd/app.py)によると、 '/ etc/scrapydにあるscrapyd設定ファイルに' poll_interval = 0.1'を追加することができます/ conf.d/000-default'となります。 – AliBZ

4

私がscrapydで経験したことから、スパイダーをスケジュールしてすぐにスパイダーを実行することはありません。通常、現在のスパイダーが起動して実行されるまで少し待ってから、次のスパイダープロセス(scrapy crawl)を開始します。

したがって、scrapydは、max_procカウントに達するまでプロセスを1つずつ起動します。

あなたのログから、あなたのスパイダーのそれぞれが約1秒間実行していることがわかります。私は、あなたが少なくとも30秒間動くならば、あなたはあなたのすべてのスパイダーが走っているのを見るでしょう。

+0

イエップ;私も同様に気づいたものです。結果を即時に表示するため、サブプロセスを実装しました.Popenコールは即座にスクレイプします。私はScrapydのスケジューラをどうにかスピードアップしたいと思っていました:) –

+0

私はscrapydが現在行っていることは論理的だと思います。これは、多くのスパイダーを同時に起動するシステムに過負荷をかけたくないため、実行する予定のスパイダーが重いものか軽いものかはわかりません。そういうわけで、それはクモを一つずつ動かすのです。あなたはscrapydコードを勉強することができますし、多分何かを微調整することができます。答えが役に立つと分かったら、アップしてください。 – warvariuc