尝试获取一个项目,我正在努力等待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。
答案 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()