Запросить ответную проблему с бесконечным сканером - PullRequest
1 голос
/ 02 марта 2020

Я пишу паук Scrapy, цель которого - отправлять запросы на удаленный сервер, чтобы увлажнить кеш. Это бесконечный сканер, потому что мне нужно делать запросы через регулярные промежутки времени. Я создал первоначальный паук, который генерирует запрос и попал на сервер, он работал нормально, но теперь, когда я выполняю его бесконечно, я не получаю ответы. Я даже пытался отлаживать в промежуточном программном обеспечении process_response, но пока не смог достать паука. Вот набросок кода, который я реализую

 def generate_requests(self, payloads):
        for payload in payloads:
            if payload:
                print(f'making request with payload {payload}')
                yield Request(url=Config.HOTEL_CACHE_AVAILABILITIES_URL, method='POST', headers=Config.HEADERS,
                              callback=self.parse, body=json.dumps(payload), dont_filter=True, priority=1)

 def start_requests(self):
        crawler_config = CrawlerConfig()
        while True:
            if not self.city_scheduler:
                for location in crawler_config.locations:
                    city_name = location.city_name
                    ttl = crawler_config.get_city_ttl(city_name)
                    payloads = crawler_config.payloads.generate_payloads(location)
                    self.city_scheduler[location.city_name] = (datetime.now() + timedelta(minutes=ttl)).strftime("%Y-%m-%dT%H:%M:%S")

                    yield from self.generate_requests(payloads)

1 Ответ

1 голос
/ 02 марта 2020

Похоже, что у scrapy странное поведение, когда l oop в start_requests. Вы можете проверить подобное улучшение на скрепо репо здесь . Перемещение, пока l oop logi c в вашем методе разбора, решит эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...