Я развернул приложение Django на Heroku. Приложение само по себе работает нормально. Я могу запускать такие команды, как heroku run python project/manage.py syncdbи heroku run python project/manage.py shell, и это работает хорошо.
В моем проекте Django используется библиотека веб-скрейпинга Python под названием Scrapy. Scrapy поставляется с командой под названием scrapy crawl abc, которая помогает мне очищать веб-сайты, которые я определил в приложении scrapy. Когда я запускаю команду scrapy, такую как scrapy crawl spidername, на моем локальном компьютере, приложение может очистить дату и скопировать ее в мою базу данных. Однако, когда я запускаю ту же команду на Heroku в подкаталоге каталога моего проекта heroku run scrapy crawl spidername, ничего не происходит.
Я не вижу в журналах 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'
Любые указатели на то, где именно я ошибаюсь? Как мне выполнить команду scrapy на Heroku, чтобы мое приложение могло очистить внешний веб-сайт и сохранить эти данные в базе данных. Разве внешние команды не запускаются в Heroku как - heroku run command?