2017-04-02 7 views
1

私はScrapyクロールの結果を待つために取り組んでいるプロジェクトを手に入れようとしています。 Pythonの初心者ですが、私はすぐに習っています。ここで私のクロールをリフレッシュするための私の修復機能です。Python/Scrapyが完了するまで待つ

def refreshCrawls(): 
    os.system('rm JSON/*.json) 

    os.system('scrapy crawl TeamGameResults -o JSON/TeamGameResults.json --nolog') 
    #I do this same call for 4 other crawls also 

私は引数を解析していながら、この関数は、私の「主な機能」内のループのために呼び出されます:

for i in xrange(1,len(sys.argv)): 
    arg = sys.argv[i] 
    if arg == '-r': 
      pprint('Refreshing Data...') 
      refreshCrawls() 

このすべての作品やJSONファイルを更新し、私のしかし、残りの部分私が愚かにもそれを期待していたので、アプリケーションはこれを待たない。私はアプリをPiに移動して、貧しい小さな人がすぐにリフレッシュすることができなくなるまでこれで問題はありませんでした。これを解決する方法の提案はありますか?

私のクイックダーティな答えは、それを別の自動化されたスクリプトに分割し、自動化された「メイン関数」を実行する前に1時間程度実行したり、スリープタイマーを使用します。私のためにこれを解決することができるいくつかの低いぶら下がりの果物。私は私のコマンドラインでリフレッシュargを入力できるのが好きです。代わりにos使用subprocessを使用しての

答えて

2

from subprocess import Popen 
import shlex 

def refreshCrawls(): 
    os.system('rm JSON/*.json') 
    cmd = shlex.split('scrapy crawl TeamGameResults -o JSON/TeamGameResults.json --nolog') 
    p = Popen(cmd) 
    #I do this same call for 4 other crawls also 
    p.wait() 

for i in xrange(1,len(sys.argv)): 
    arg = sys.argv[i] 
    if arg == '-r': 
      pprint('Refreshing Data...') 
      refreshCrawls() 
+0

おかげで、これは良いです。私は、FYIを動かすためのリストとして私の議論を伝えなければなりませんでした。 ['scrapy'、 'crawl'、 'TeamGame ... –

+0

@JordanWayneCrabb手動でリストを作成する必要がないようにスクリプトを更新しました。この回答が問題を解決した場合は、それを受け入れることを検討してください。 –

関連する問題