我正在建立我的第一个包含scrapy的项目。一切都在我的开发服务器(Windows)上运行良好,但在heroku上有一些问题。我正在使用django-dynamic-scraper来处理我的整合工作。
在Windows上,我在单独的命令提示符中运行以下命令:
: scrapy server
: python manage.py celeryd -l info
: python manage.py celerybeat
在heroku上我运行以下内容:
: heroku bash >heroku run scrappy server (solves app not found issue)
: heroku run python manage.py celeryd -l info -B --settings=myapp.production
实际的dejango应用程序没有错误或问题,我可以访问管理员网站。垃圾邮件服务器运行:
: Scrapyd web console available at http://0.0.0.0:6800/
: [Launcher] Scrapyd started: max_proc=16, runner='scrapyd.runner'
: Site starting on 6800
: Starting factory <twisted.web.server.Site instanceat 0x7f1511f62ab8>
芹菜殴打和工人正在工作:
: INFO/Beat] beat: Starting...
: INFO/Beat] Writing entries...
: INFO/MainProcess] Connected to django://guest:**@localhost:5672//
: WARNING/MainProcess] celery@081b4100-eb7f-441c-976d-ecf97d2d7e5a ready.
: INFO/Beat] Writing entries...
: INFO/Beat] Writing entries...
第一个问题:当触发运行蜘蛛的周期性任务时,我在芹菜日志中收到以下错误。
File "/app/.heroku/python/lib/python2.7/site-packages/dynamic_scraper/utils/ta
sk_utils.py", line 31, in _pending_jobs
resp = urllib2.urlopen('http://localhost:6800/listjobs.json?project=default')
...
...
File "/app/.heroku/python/lib/python2.7/urllib2.py", line 1184, in do_open
raise URLError(err)
URLError: <urlopen error [Errno 111] Connection refused>
所以似乎由于某种原因,heroku不允许芹菜访问scrapy服务器。
以下是我的一些设置:
scrapy.cfg
[settings]
default = myapp.scraper.scrape.settings
[deploy]
#url = http://localhost:6800/
project = myapp
芹菜配置
[config]
app: default:0x7fd4983f6310 (djcelery.loaders.DjangoL
transport: django://guest:**@localhost:5672//
results: database
concurrency: 4 (prefork)
[queues]
celery exchange=celery(direct) key=celery
提前致谢,如果您需要更多信息,请与我们联系。
答案 0 :(得分:1)
答案是:您无法在同一主机上运行您的Web应用程序,芹菜和scrapy服务器,并允许它们相互通信。但是,使用heroku有两种方法可以完成此设置。
选项1:
localhost:6800
更改为myapp-scrapy.herokuapp.com
。选项2:
我希望这可以帮助别人省下一些痛苦。