首页 > 解决方案 > Scrapy - 日志级别。在 AWS Lambda 与本地上运行的不同行为

问题描述

我从脚本https://doc.scrapy.org/en/latest/topics/practices.html#run-scrapy-from-a-script运行 Scrapy以从 AWS Lambda 启动脚本。我用 SAM 编译项目,一切都是正确的。

但是现在,我遇到了 LOG_LEVEL 参数的问题。

def handler(event, context):

  settings = {
             'USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.85 Safari/537.36',
             'LOG_ENABLED': True,
             'LOG_LEVEL': 'ERROR'
          }

  process = CrawlerProcess(settings=settings)
  process.crawl(Spider)
  process.start()

在本地执行此代码时,一切正常,仅收到 LOG_LEVEL: ERROR,但在 AWS Lambda 中执行此代码时,我收到 LOG_LEVEL: DEBUG,我不知道如何解决。

标签: pythonloggingscrapyaws-lambda

解决方案


根据Scrapy 问题 #3587中 OP 的输入,事实证明 AWS Lambda 在根记录器上安装了自己的处理程序,因此您需要在使用 Scrapy 之前删除这些处理程序:

from logging import getLogger

getLogger().handlers = []

def handler(event, context):  # AWS Lambda entry point
    pass  # Your code to call Scrapy.

推荐阅读