Scrapy ItemPipeline — «RuntimeError: ожидание не использовалось с будущим»

Попытка удалить дубликаты путем подсчета документов с одинаковым URL-адресом. Использование Motor (асинхронный драйвер для MongoDB) для этих целей.

Здесьprocess_itemфункция:

согласно документам

      async def process_item(self, item, spider):
        response = self.mangas.count_documents({"url": item.url})
        print(response, 'is future?', futures.isfuture(response)) # explicit type checking
        count = await response # here an exception
        if count:
            raise DropItem(f"Duplicate found of {item}")
        await self.mangas.insert_one(dict(item))
        return item

Трассировка:

      is future? True
2022-08-23 22:39:10 [scrapy.core.scraper] ERROR: Error processing *SOME PARSED DATA*
Traceback (most recent call last):
  File "C:\Users\Canald\AppData\Local\pypoetry\Cache\virtualenvs\api-abuLimWH-py3.10\lib\site-packages\twisted\internet\defer.py", line 1660, in _inlineCallbacks
    result = current_context.run(gen.send, result)
  File "C:\Users\Canald\Files\VS\HChan\hentai_scrap\pipelines.py", line 48, in process_item
    count = await response
RuntimeError: await wasn't used with future

Также пытался использоватьmaybe_deferred_to_futureотscrapy.utils.defer, в соответствии с этим , но это вызывает то же исключение.

0 ответов

Другие вопросы по тегам