python - PyCharm IDE 断点在子进程调用中不起作用

标签 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)

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

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

最佳答案

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

关于python - PyCharm IDE 断点在子进程调用中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41397727/

相关文章:

python - 多行字典: Replace the key as per a word in value

python - 如何在没有循环的情况下使用 numpy.lexsort

python - 为什么我不能在 ubuntu 14.04 LTS 上导入 pyzmq?

python - 如何在 Python 中部分转置 CSV 表

python - SQLAlchemy 将表名更改为有两个下划线

c# - VS2005 : when stepping through C# code, 有没有办法跳过代码段?

debugging - 什么是私有(private)字节、虚拟字节、工作集?

c++ - 一副纸牌,段错误 : 11

python - 在 Flask API 中的 Flask-restful 端点之间进行调用的正确方法是什么?

python - 单元测试 Flask 应用程序时的模板