PyCharm IDE断点不适用于子进程调用

时间:2016-12-30 14:18:09

标签: python debugging flask scrapy pycharm

我有一个 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)

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

有关如何在蜘蛛内部获取断点的任何建议吗?

1 个答案:

答案 0 :(得分:0)

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