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
, в соответствии с этим , но это вызывает то же исключение.