Ошибка инициализации Scrapyd при запуске паука Scrapy

Я пытаюсь развернуть сканер с четырьмя пауками. Один из пауков использует XMLFeedSpider и отлично работает из оболочки и scrapyd, но другие используют BaseSpider, и все выдают эту ошибку при запуске в scrapyd, но нормально работают из оболочки.

TypeError: init() получил неожиданный ключевой аргумент '_job'

Из того, что я прочитал, это указывает на проблему с функцией инициализации в моих пауках, но я не могу решить эту проблему. Мне не нужна функция инициализации, и если я полностью ее удалю, я все равно получу ошибку!

Мой паук выглядит так

from scrapy import log
from scrapy.spider import BaseSpider
from scrapy.selector import XmlXPathSelector
from betfeeds_master.items import Odds
# Parameters
MYGLOBAL = 39
class homeSpider(BaseSpider): 
    name = "home" 
    #con = None

    allowed_domains = ["www.myhome.com"]
    start_urls = [
        "http://www.myhome.com/oddxml.aspx?lang=en&subscriber=mysubscriber",
    ]
    def parse(self, response):

        items = []

        traceCompetition = ""

        xxs = XmlXPathSelector(response)
        oddsobjects = xxs.select("//OO[OddsType='3W' and Sport='Football']")
        for oddsobject in oddsobjects:
            item = Odds()
            item['competition'] = ''.join(oddsobject.select('Tournament/text()').extract())
            if traceCompetition != item['competition']:
                log.msg('Processing %s' % (item['competition']))                #print item['competition']
                traceCompetition = item['competition']
            item['matchDate'] = ''.join(oddsobject.select('Date/text()').extract())
            item['homeTeam'] = ''.join(oddsobject.select('OddsData/HomeTeam/text()').extract())
            item['awayTeam'] = ''.join(oddsobject.select('OddsData/AwayTeam/text()').extract())
            item['lastUpdated'] = ''
            item['bookie'] = MYGLOBAL
            item['home'] = ''.join(oddsobject.select('OddsData/HomeOdds/text()').extract())
            item['draw'] = ''.join(oddsobject.select('OddsData/DrawOdds/text()').extract())
            item['away'] = ''.join(oddsobject.select('OddsData/AwayOdds/text()').extract())

            items.append(item)

        return items

Я могу использовать функцию инициализации для паука, но получаю точно такую ​​же ошибку.

def __init__(self, *args, **kwargs):
    super(homeSpider, self).__init__(*args, **kwargs)
    pass

Почему это происходит и как мне решить эту проблему?


person Cruachan    schedule 31.07.2013    source источник
comment
Вы определили метод __init__ в других пауках? Проблема может быть в том, что вы не принимаете **kwargs там..   -  person alecxe    schedule 31.07.2013
comment
XMLFeedSpider не сильно отличается от BaseSpider, поэтому я не понимаю, почему эти пауки вызывают эту ошибку. (github.com/scrapy/scrapy/blob/master /scrapy/contrib/spiders/). Не могли бы вы опубликовать более полную трассировку стека?   -  person paul trmbrth    schedule 01.08.2013


Ответы (1)


Хороший ответ дал alexx:

Моя функция инициализации была:

def __init__(self, domain_name):

Чтобы работать в яйце для scrapyd, оно должно быть:

def __init__(self, domain_name, **kwargs):

учитывая, что вы передаете domain_name в качестве обязательного аргумента

person hugsbrugs    schedule 08.10.2014