Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让芹菜与heroku和django dynamic scraper上的scrapy服务器协同工作?_Django_Scrapy_Celery_Django Celery_Django Dynamic Scraper - Fatal编程技术网

如何让芹菜与heroku和django dynamic scraper上的scrapy服务器协同工作?

如何让芹菜与heroku和django dynamic scraper上的scrapy服务器协同工作?,django,scrapy,celery,django-celery,django-dynamic-scraper,Django,Scrapy,Celery,Django Celery,Django Dynamic Scraper,我在建设我的第一个项目的过程中,包括刮痧。在我的开发服务器(windows)上一切都很好,但在heroku上有一些问题。我正在使用django dynamic scraper为我处理集成工作的分配 在windows上,我在单独的命令提示中运行以下命令: : scrapy server : python manage.py celeryd -l info : python manage.py celerybeat 在heroku上,我运行以下命令: : heroku bash >herok

我在建设我的第一个项目的过程中,包括刮痧。在我的开发服务器(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>
第一个问题:当触发运行爬行器的定期任务时,我在芹菜日志中得到以下错误

    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>
芹菜

[config]
    app:         default:0x7fd4983f6310 (djcelery.loaders.DjangoL
    transport:   django://guest:**@localhost:5672//
    results:     database
    concurrency: 4 (prefork)
[queues]
    celery       exchange=celery(direct) key=celery

提前谢谢,如果您需要更多信息,请告诉我。

答案是:您不能在同一台主机上运行web应用程序、芹菜和scrapy服务器,并允许它们相互对话。但是,有两种方法可以通过heroku完成此设置

备选案文1:

  • 用于将您的scrapy服务器部署到名为“myapp scrapy.herokuapp.com”的主机上
  • 然后将django scrapy应用程序部署到另一个名为“myapp.herokuapp.com”的主机上
  • 在django dynamic scraper中打开task_utls.py并将所有出现的
    localhost:6800
    更改为
    myapp scrapy.herokuapp.com
  • 备选案文2:

  • 只需使用heroku的调度程序手动调用scraper,就像在命令行上一样。您将绕过所有的动态调度特性,但对于某些用例来说,这很好
  • 我希望这能帮助别人减轻一些痛苦

    [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