私はHerokuにDjangoアプリケーションをデプロイしました。アプリケーション自体は正常に動作します。私はheroku run python project/manage.py syncdb
とheroku run python project/manage.py shell
のようなコマンドを実行することができ、これはうまく動作します。HerokuでホストされているDjangoプロジェクトのサブディレクトリから非djangoコマンドを実行していますか?
私のDjangoプロジェクトは、ScrapyというPython Webスクレイピングライブラリを利用しています。 Scrapyには、scrapy crawl abc
というコマンドが付属しています。これは、私がscrapyアプリケーションで定義したWebサイトをスクラップするのに役立ちます。ローカルマシンでscrapy crawl spidername
のようなscrapyコマンドを実行すると、アプリケーションは日付をスクラップしてデータベースにコピーできます。しかし、私がプロジェクトディレクトリheroku run scrapy crawl spidername
のサブディレクトリの下でHerokuで同じコマンドを実行すると、何も起こりません。
私は私が間違っているつもりだ場所を指すことができHerokuのログに何も表示されません。
2012-01-26T15:45:38+00:00 heroku[run.1]: State changed from created to starting
2012-01-26T15:45:43+00:00 app[run.1]: Awaiting client
2012-01-26T15:45:43+00:00 app[run.1]: Starting process with command `project/spiderMainDir scrapy crawl spidername`
2012-01-26T15:45:44+00:00 heroku[run.1]: State changed from starting to up
2012-01-26T15:45:46+00:00 heroku[run.1]: State changed from up to complete
2012-01-26T15:45:46+00:00 heroku[run.1]: Process exited
いくつかの追加情報を:
マイscrapyアプリは掻き取りアイテムを保存するpipelines.py
を呼び出しますデータベースに転送します。 pipelines.py
ファイルでは、モデルをインポートしてデータをデータベースに保存できるように、Django設定を呼び出すために書いたものです。
import os,sys
PROJECT_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.append(PROJECT_PATH)
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
どこのポインタが間違っていますか? Herokuでscrapy
コマンドを実行すると、アプリケーションは外部Webサイトを掻き出し、そのデータをデータベースに保存できます。外部コマンドが - heroku run command
のようにHerokuで実行される方法ではありませんか?
こんにちは。問題は、サブディレクトリから 'heroku run'を実行していたことです。サブディレクトリから 'heroku run scrapy crawl spidername'を実行しようとしていて、動作しなかったという点で、私の質問はあまり明確ではありませんでした。私は、回避策に対処する答えを追加しました。 –