2016-11-17 9 views
0

私は、Python Scrapyクローラの複数のインスタンスを実行するスクリプトを持って、クローラは/root/crawler/batchscript.pybashを使用してスクリプトにディレクトリを変更することはできません - cronの

int型であり、/root/crawler/に私はそのscrapyクローラを持っています。

クローラは完全に正常に動作しています。私はスクレーパーが正常に動作batchscrip.pyディレクトリ/root/crawler/内で実行すると

batchscript.pyは

from scrapy.settings import Settings 
from scrapy.utils.project import get_project_settings 
from amazon_crawler.spiders.amazon_scraper import MySpider 

process = CrawlerProcess(get_project_settings()) 

(のみreleventコードを掲示する)、次のようになります。

しかし、python /root/crawler/batchscript.pyを使用してこのディレクトリの外部から実行すると、意図した通りに実行されません。(設定が正しくインポートされません)get_project_settings()は空です。私はbatchinit.sh/root/crawler/内のディレクトリスクレーパー ランを実行すると、私はbatchinit.sh

#!/bin/bash 
alias batchscript="cd /root/crawler/" 
python batchscript.py 

と行動と呼ばれるbashスクリプトを作成し、あまりにも BASHスクリプトを作成しようとした

は同じ:(

です罰金。

B私がこのディレクトリの外からbash /root/crawler/batchinit.shを使用して実行した場合、意図したとおりに実行されません。 (設定が正しくインポートされません)、get_project_settings()は です。

なぜ私はそれをやっているのですか?究極の目標は何ですか?

私はこのスクリプトのcronジョブを作成したいと思います。私は上記のコマンドを使用してcronjobsをスケジュールしようとしましたが、上記のような問題があります。

+1

シェルスクリプトでエイリアスを定義することで何をしようとしていますか?どうしてバッチスクリプトにエイリアシングするのではなく、その行にcd/root/crawler /を置くのはなぜですか? –

+0

'scrapy'と' amazon_crawler'モジュールはどこにありますか?彼らは仮想環境にいますか? – lucasnadalutti

+0

これは役立つかもしれません:http://stackoverflow.com/a/22466264/2874789 –

答えて

2

はbashを使用して、あなたは常に行うことができます:

cd /root/crawler && python batchscript.py 

それは常にcronジョブで参照するプログラム/実行ファイルへの絶対パスを使用するには良い政策です。

関連する問題