我在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',并且它不起作用。我添加了解决工作问题的答案。 –