【问题标题】:PyCharm IDE breakpoints don't work in subprocess callPyCharm IDE 断点在子进程调用中不起作用
【发布时间】:2017-05-14 20:13:36
【问题描述】:

我有一个 Flask 项目正在运行,并通过对 Scrapy 蜘蛛的子进程调用:

class Utilities(object):

    @staticmethod
    def scrape(inputs):
        job_id = str(uuid.uuid4())
        project_folder = os.path.abspath(os.path.dirname(__file__))
        subprocess.call(['scrapy', 'crawl', "ExampleCrawler", "-a", "inputs=" + str(inputs), "-s", "JOB_ID=" + job_id],
                            cwd="%s/scraper" % project_folder)
        return job_id

即使我在项目的 Python 调试器中启用了“调试时自动附加到子进程”,蜘蛛内部的断点也不起作用。再次起作用的第一个断点将是return job_id 上的一个断点。

这里是蜘蛛的一部分代码,我希望断点可以工作:

from scrapy.http import FormRequest
from scrapy.spiders import Spider
from scrapy.loader import ItemLoader
from Handelsregister_Scraper.scraper.items import Product
import re


class ExampleCrawler(Spider):
    name = "ExampleCrawler"

    def __init__(self, inputs='', *args, **kwargs):
        super(ExampleCrawler, self).__init__(*args, **kwargs)
        self.start_urls = ['https://www.example-link.com']
        self.inputs = inputs

    def parse(self, response):
        yield FormRequest(self.start_urls[0], callback=self.parse_list_elements, formdata=self.inputs)

除了启用我所做的上述选项之外,我找不到任何解决方案。

关于如何在蜘蛛工作中获取断点有什么建议吗?

【问题讨论】:

    标签: python debugging flask scrapy pycharm


    【解决方案1】:

    调试器不起作用,因为它不是子进程,而是外部调用。请参阅this answer 了解可能的解决方法。

    【讨论】:

      【解决方案2】:

      尝试在“编辑配置”中配置此 python 运行配置。之后,在调试模式下运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-10
        • 2015-11-20
        • 2019-11-20
        • 1970-01-01
        • 2020-08-11
        • 1970-01-01
        • 2013-05-06
        • 1970-01-01
        相关资源
        最近更新 更多