Использовать сигнал Django при вставке данных в базу данных из Scrapy - PullRequest
0 голосов
/ 15 мая 2018

Я хотел бы интегрировать Scrapy с Django.

Когда я вставляю данные в БД из Scrapy, сигнал Django не работает.

Это фрагмент кода, который используется для сигнала.

@receiver(post_save, sender=Page)
def create_page(sender, instance=None, created=False, **kwargs):
    if created:
        print('========== page created')

Это pipeline.py, который используется для вставки данных в БД.

class CrawlerPipeline(object):
    def __init__(self, unique_id, *args, **kwargs):
        self.unique_id = unique_id

    @classmethod
    def from_crawler(cls, crawler):
        return cls(
            unique_id=crawler.settings.get('unique_id'),
        )

    def close_spider(self, spider):
        pass

    def process_item(self, item, spider):
        site = Site.objects.get(id=self.unique_id)
        page = Page(url=item['url'], site=site)
        page.save()
        return item

Как видите, данные вставляются в БД на части Scrapy и работают.

Но сигнал Django работает не так, как я ожидал.

Я не уверен, как заставить сигнал Django работать.

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