2016-12-30 115 views
2

我有一個項目,一個子進程調用一個Scrapy蜘蛛運行:PyCharm IDE斷點不子呼叫工作

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) 

我再也找不到比讓我照做了說選擇什麼方法解決這個其他。

任何建議如何獲得蜘蛛工作內的斷點?

回答

0

調試器不起作用,因爲它不是一個子進程,而是一個外部調用。請參閱this answer以瞭解可能的解決方法。