Python / Scrapy等到完成

时间:2017-04-02 22:08:27

标签: python-2.7 scrapy wait

尝试获取一个项目,我正在努力等待Scrapy爬行的结果。对Python来说很陌生,但我很快就学会了,到目前为止我还喜欢它。这是我的补救功能,以刷新我的爬行;

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

当我解析args时,在我的'main function'中的for循环中调用此函数:

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

这一切都有效并且确实更新了JSON文件,但是我的应用程序的其余部分并没有等到这个,因为我愚蠢地期望它。直到我把应用程序移到Pi上才真的有问题,现在可怜的小家伙不能很快刷新,有关如何解决此问题的任何建议吗?

我的快速肮脏的回答说将它拆分成一个不同的自动脚本,然后在运行我的自动“主要功能”之前运行一个小时左右,或者使用睡眠计时器但是如果有一些,我宁愿正确地解决这个问题。低悬的水果可以解决这个问题。我喜欢能够在命令行中输入刷新arg。

1 个答案:

答案 0 :(得分:2)

而不是使用os使用subprocess

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()