我在Heroku上部署了一個Django應用程序。應用程序本身工作正常。我可以運行諸如heroku run python project/manage.py syncdb
和heroku run python project/manage.py shell
之類的命令,並且這種方式很好。從Heroku上託管的Django項目的子目錄運行非django命令?
我的Django項目使用名爲Scrapy的Python網頁抓取庫。 Scrapy帶有一個名爲scrapy crawl abc
的命令,它幫助我抓取我在scrapy應用程序中定義的網站。當我在本地機器上運行scrapy命令(例如scrapy crawl spidername
)時,應用程序能夠將日期和日期複製到我的數據庫中。但是,當我在我的項目目錄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設置而編寫的,以便我可以導入模型並將數據從scrapy應用程序保存到數據庫。
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
命令,以便我的應用程序可以抓取外部網站並將該數據保存到數據庫。外部命令在Heroku中的運行方式不像 - heroku run command
?
嗨。很抱歉,問題是從子目錄運行'heroku run'。我的問題並不十分清楚,因爲我曾嘗試從子目錄運行'heroku run scrapy crawl spidername',並且它不起作用。我添加了解決工作問題的答案。 –