0

コマンドラインから完全に実行されるスパイダーを次のようにセットアップしました

$ scrapy crawl somesite

そして、この文字列でシェルスクリプトを作成し、cronjob で実行しました。しかし、クロールは前のスクレイピー クローラーの終了を待たないため、非常に悪い考えです。だから私はいくつかの非常に厄介な結果を得ました。だから私はクローラーを実行しようとしています

$ scrapy server
$ curl http://localhost:6800/schedule.json -d project=myproject -d spider=spider2

そして結果が出ない。クローラが実行されていません。スパイダーの実行をスケジュールする方法がわかりません (たとえば、10 分ごと)。

4

1 に答える 1

1

Scrapy のどのバージョンを使用していますか?

前のクローラーの終了を待機する問題を解決するには、次のような簡単な制御を試してください。

#!/usr/bin/python

import os
import traceback

spiderName='someSpider'

# Block file
pid = str(os.getpid())
pidfile = "/tmp/" + spiderName + ".pid"

if os.path.isfile(pidfile):
  print "%s is blocked, another process running..." % spiderName
  sys.exit()
else:
  file(pidfile, 'w').write(pid)

try:
  os.chdir('/some/dir/crawlers')
  os.execl('/usr/local/bin/scrapy', 'foo', 'crawl', spiderName)
except OSError:
  print str(traceback.format_exc()) 

os.unlink(pidfile)
于 2012-09-21T12:24:45.067 に答える