2013-09-22 44 views
2

我有幾個需要爬行的蜘蛛。我正在使用缺省設置的scrapyd。我設法安排了使用scrapyd界面的工作。現在的一切都很好,除了工作沒有結束。每次檢查時,我發現有16個(4個工作/ 4個cpus)工作正在運行,所有其他工作正在等待,除非我關閉scrapy。Scrapyd作業未完成

我也查了日誌,它說:

2013-09-22 12:20:55+0000 [spider1] INFO: Dumping Scrapy stats: 
    { 
    'downloader/exception_count': 1, 
    'downloader/exception_type_count/scrapy.exceptions.IgnoreRequest': 1, 
    'downloader/request_bytes': 244, 
    'downloader/request_count': 1, 
    'downloader/request_method_count/GET': 1, 
    'downloader/response_bytes': 7886, 
    'downloader/response_count': 1, 
    'downloader/response_status_count/200': 1, 
    'finish_reason': 'finished', 
    'finish_time': datetime.datetime(2013, 9, 22, 12, 20, 55, 635611), 
    'log_count/DEBUG': 7, 
    'log_count/INFO': 3, 
    'request_depth_max': 1, 
    'response_received_count': 1, 
    'scheduler/dequeued': 2, 
    'scheduler/dequeued/memory': 2, 
    'scheduler/enqueued': 2, 
    'scheduler/enqueued/memory': 2, 
    'start_time': datetime.datetime(2013, 9, 22, 12, 20, 55, 270275)} 
2013-09-22 12:20:55+0000 [spider1] INFO: Spider closed (finished) 

你如何使用刮數百scrapyd蜘蛛?

編輯:

scrapy.cfg:

[settings] 
default = myproject.scrapers.settings 

[deploy] 
url = http://localhost:6800/ 
project = myproject 
version = GIT 

[scrapyd] 
eggs_dir = scrapy_dir/eggs 
logs_dir = scrapy_dir/logs 
items_dir = scrapy_dir/items 
dbs_dir  = scrapy_dir/dbs 

scrapy settings.py

import os 
from django.conf import settings 

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") 

BOT_NAME = 'scrapers' 

SPIDER_MODULES = ['myproject.scrapers.spiders'] 

DOWNLOADER_MIDDLEWARES = { 
    'myproject.scrapers.middlewares.IgnoreDownloaderMiddleware': 50, 
} 

ITEM_PIPELINES = [ 
    'myproject.scrapers.pipelines.CheckPipeline', 
    'myproject.scrapers.pipelines.CleanPipeline', 
    'myproject.contrib.pipeline.images.ImagesPipeline', 
    'myproject.scrapers.pipelines.SerializePipeline', 
    'myproject.scrapers.pipelines.StatsCollectionPipeline', 
]  

DOWNLOAD_DELAY = 0.25 

path_to_phatomjs = '/home/user/workspace/phantomjs-1.9.1-linux-x86_64/bin/phantomjs' 

IMAGES_STORE = settings.MEDIA_ROOT + '/' + settings.IMAGES_STORE 
IMAGES_THUMBS = { 
    'small': (70, 70), 
    'big': (270, 270), 
} 
+0

您可以顯示您的scrapy設置嗎? – alecxe

+0

您可以製作一個簡化的項目來重現此問題嗎?另外,它似乎是用phantomjs來做什麼的,你怎麼用它?主要問題可能是不允許完成由scrapyd啓動的子流程。 – Rolando

回答

0

我儘快試圖張貼此答案昨天,我發現了問題的根源,但我的帳戶有些出問題了。

問題來自PhantomJs驅動程序,它阻止了整個工作的完成。

起初我戒菸與刪除功能的驅動程序:

def __del__(self): 
    self.driver.quite() 
    ... 

現在,我創建了一個功能quit_driver,我迷上它spider_closed信號。

@classmethod 
def from_crawler(cls, crawler): 
    o = cls(crawler.stats) 
    crawler.signals.connect(o.quit_driver, signal=signals.spider_closed) 
    return o 
+0

你把這個方法放在哪裏? – 2016-03-03 09:38:28