Python scrapy在异常时未打印出stacktrace

Python scrapy在异常时未打印出stacktrace,python,web-crawler,scrapy,Python,Web Crawler,Scrapy,是否有一种特殊的机制来强制scrapy打印出所有python异常/堆栈跟踪 我犯了一个简单的错误,错误地获取了一个列表属性,导致AttributeError没有完整地显示在日志中 结果是: 2015-11-15 22:13:50 [scrapy] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 264, 'downloader/request_count': 1, 'downloader/request_method_coun

是否有一种特殊的机制来强制scrapy打印出所有python异常/堆栈跟踪

我犯了一个简单的错误,错误地获取了一个列表属性,导致AttributeError没有完整地显示在日志中 结果是:

2015-11-15 22:13:50 [scrapy] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 264,
 'downloader/request_count': 1,
 'downloader/request_method_count/GET': 1,
 'downloader/response_bytes': 40342,
 'downloader/response_count': 1,
 'downloader/response_status_count/200': 1,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2015, 11, 15, 22, 13, 50, 860480),
 'log_count/CRITICAL': 1,
 'log_count/DEBUG': 1,
 'log_count/INFO': 1,
 'response_received_count': 1,
 'scheduler/dequeued': 1,
 'scheduler/dequeued/memory': 1,
 'scheduler/enqueued': 1,
 'scheduler/enqueued/memory': 1,
 'spider_exceptions/AttributeError': 1,
 'start_time': datetime.datetime(2015, 11, 15, 22, 13, 49, 222371)}
因此,它显示了AttributeError计数1,但没有告诉我在哪里以及如何,我必须在代码中手动放置ipdb.set_trace()以找出它在哪里出错。Scrapy自己继续执行其他线程,没有打印任何内容

ipdb>
AttributeError: "'list' object has no attribute 'match'"
> /Users/username/Programming/regent/regentscraper/spiders/regent_spider.py(139)request_listing_detail_pages_from_listing_id_list()
    138             volatile_props = ListingScanVolatilePropertiesItem()
--> 139             volatile_props['position_in_search'] = list_of_listing_ids.match(listing_id) + rank_of_first_item_in_page
    140
刮擦设置
在您的实际spider中,我可以看到大量堆栈跟踪,看起来您正试图连接到一个项目定义中

我敦促你也包括蜘蛛完全感冒,以及你的项目,以帮助解决这个问题,虽然它是两年前,所以我相信你已经前进或解决了它

正如堆栈跟踪所指出的那样,“list”对象没有属性“match”,这是一个错误,因为您使用的list已经是python中的一个逻辑。。。似乎是罪魁祸首,因为堆栈跟踪告诉您list没有属性名称匹配,因此它使用list函数sooo yeah

也可能是在完整的spider代码中,您必须找到项目值,然后将其重新定义为列表


为了更好地衡量,当使用单词列表时,除非使用其功能性逻辑,否则请将您命名为r“list”,而不是。。。列表获取我?

我遇到了与上述相同的事件。 以下版本在我的环境中使用:

  • Django(1.11.4)
  • 刮痧(1.4.0)
  • 胶状物项(1.1.1)
我通过在dnango的设置中添加“LOGGING_CONFIG=None”解决了这个问题,该设置在scrapy中加载。 我使用以下内容创建了一个新的django设置文件作为settings_scrapy:

mysite.settings\u scrapy

try:
    from mysite.settings import *
    LOGGING_CONFIG = None
except ImportError:
    pass
然后,将设置文件加载到scrapy的设置文件中,如下所示:

import sys
import os
import django
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings_scrapy'
django.setup()
之后,在spider和管道中出现异常stacktrace

参考


在问题中添加了设置否,没有帮助-只是尝试了一下。感谢@alecxeI在设置文件中将其精确定位到以下行(我需要它,因为我使用的是Django 1.8)-Django.setup()#Django 1.8的新功能--删除此行将开始记录回溯-不确定为什么,请提供您的解决方案,作为一个可以轻松找到并投票的答案。您可以设置日志记录['disable\ u existing\ u logger']在django项目的settings.py中设置为False,而不是设置LOGGING_CONFIG=None。
import sys
import os
import django
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings_scrapy'
django.setup()